diff options
author | Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com> | 2015-06-02 10:32:25 -0300 |
---|---|---|
committer | Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com> | 2015-06-05 09:39:49 -0300 |
commit | 02242448bf431a69fd0b8c929ca4408a05479baa (patch) | |
tree | 2e551395d222ce28952c9fcc48bc409bdf1f5c0b | |
parent | 7fe9e2e089f4990b7d18d0798f591ab276b15f2b (diff) | |
download | glibc-02242448bf431a69fd0b8c929ca4408a05479baa.tar.gz |
Avoid outputting to TTY after an expected memory corruption in testcase
Protect TTY against an expected memory corruption from testcase
tst-malloc-backtrace, which is expected to SIGABRT after a forced memory
corruption.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | malloc/tst-malloc-backtrace.c | 15 | ||||
-rw-r--r-- | test-skeleton.c | 28 |
3 files changed, 32 insertions, 16 deletions
@@ -1,3 +1,8 @@ +2015-06-05 Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com> + + * malloc/tst-malloc-backtrace.c (do_test): Redirect libc fatal + errors to stderr. + 2015-06-05 Florian Weimer <fweimer@redhat.com> [BZ #15661] diff --git a/malloc/tst-malloc-backtrace.c b/malloc/tst-malloc-backtrace.c index 2e24157907..7b317bbdb2 100644 --- a/malloc/tst-malloc-backtrace.c +++ b/malloc/tst-malloc-backtrace.c @@ -30,12 +30,22 @@ call_free (void *ptr) *(size_t *)(ptr - sizeof (size_t)) = 1; } +int do_test (void); + +#define TEST_FUNCTION do_test () +#define EXPECTED_SIGNAL SIGABRT + +#include "../test-skeleton.c" + int do_test (void) { void *ptr1 = malloc (SIZE); void *ptr2 = malloc (SIZE); + /* Avoid unwanted output to TTY after an expected memory corruption. */ + ignore_stderr(); + call_free (ptr1); ptr1 = malloc (SIZE); @@ -43,8 +53,3 @@ do_test (void) doesn't optimize out that malloc call. */ return (ptr1 == ptr2); } - -#define TEST_FUNCTION do_test () -#define EXPECTED_SIGNAL SIGABRT - -#include "../test-skeleton.c" diff --git a/test-skeleton.c b/test-skeleton.c index 1332c94a86..9ee5001440 100644 --- a/test-skeleton.c +++ b/test-skeleton.c @@ -218,6 +218,22 @@ signal_handler (int sig __attribute__ ((unused))) exit (1); } +/* Avoid all the buffer overflow messages on stderr. */ +static void +__attribute__ ((unused)) +ignore_stderr (void) +{ + int fd = open (_PATH_DEVNULL, O_WRONLY); + if (fd == -1) + close (STDERR_FILENO); + else + { + dup2 (fd, STDERR_FILENO); + close (fd); + } + setenv ("LIBC_FATAL_STDERR_", "1", 1); +} + /* Set fortification error handler. Used when tests want to verify that bad code is caught by the library. */ static void @@ -231,17 +247,7 @@ set_fortify_handler (void (*handler) (int sig)) sigemptyset (&sa.sa_mask); sigaction (SIGABRT, &sa, NULL); - - /* Avoid all the buffer overflow messages on stderr. */ - int fd = open (_PATH_DEVNULL, O_WRONLY); - if (fd == -1) - close (STDERR_FILENO); - else - { - dup2 (fd, STDERR_FILENO); - close (fd); - } - setenv ("LIBC_FATAL_STDERR_", "1", 1); + ignore_stderr (); } /* We provide the entry point here. */ |