diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | elf/tst-env-setuid.c | 12 |
2 files changed, 16 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog index 9ed7ff6883..767e22ae00 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2017-02-04 Siddhesh Poyarekar <siddhesh@sourceware.org> + + * elf/tst-env-setuid.c (do_execve): Return EXIT_UNSUPPORTED in + parent if child exited in that manner. Print WEXITSTATUS + instead of the raw status. + (do_test_prep): Rename to do_test. + (do_test): Return the result of run_executable_sgid. + (TEST_FUNCTION_ARGV): Adjust. + 2017-02-03 Alexandre Oliva <aoliva@redhat.com> Florian Weimer <fweimer@redhat.com> Carlos O'Donell <carlos@redhat.com> diff --git a/elf/tst-env-setuid.c b/elf/tst-env-setuid.c index 85d423d799..6ec3fa5874 100644 --- a/elf/tst-env-setuid.c +++ b/elf/tst-env-setuid.c @@ -87,10 +87,13 @@ do_execve (char **args) return 1; } + if (WEXITSTATUS (status) == EXIT_UNSUPPORTED) + return EXIT_UNSUPPORTED; + if (!WIFEXITED (status) || WEXITSTATUS (status) != CHILD_STATUS) { printf ("Unexpected exit status %d from child process\n", - status); + WEXITSTATUS (status)); return 1; } return 0; @@ -235,7 +238,7 @@ test_parent (void) #endif static int -do_test_prep (int argc, char **argv) +do_test (int argc, char **argv) { /* Setgid child process. */ if (argc == 2 && strcmp (argv[1], SETGID_CHILD) == 0) @@ -270,13 +273,12 @@ do_test_prep (int argc, char **argv) exit (0); } - if (run_executable_sgid (target) == 0) - exit (0); + return run_executable_sgid (target); } /* Something went wrong and our argv was corrupted. */ _exit (1); } -#define TEST_FUNCTION_ARGV do_test_prep +#define TEST_FUNCTION_ARGV do_test #include <support/test-driver.c> |