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.
This commit is contained in:
parent
7fe9e2e089
commit
02242448bf
@ -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]
|
||||
|
@ -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"
|
||||
|
@ -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. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user