Resolves #15921
The test case nptl/tst-cleanup2 fails on s390x and power6 due to
instruction sheduling in gcc. This was reported in gcc:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58034
but it was concluded that gcc is allowed to assume that the first
argument to sprintf is a character array - NULL not being a valid
character array.
* The following bugs are resolved with this release:
14155, 14699, 15522, 15531, 15532, 15736, 15749, 15797, 15867, 15890,
- 15897, 15905, 15909.
+ 15897, 15905, 15909, 15921.
* CVE-2013-4237 The readdir_r function could write more than NAME_MAX bytes
to the d_name member of struct dirent, or omit the terminating NUL
+2013-09-03 Siddhesh Poyarekar <siddhesh@redhat.com>
+
+ [BZ #15921]
+ * tst-cleanup2.c (do_test): New volatile variable RET to
+ return success.
+
2013-08-30 Ondřej Bílka <neleai@seznam.cz>
* sysdeps/pthread/pthread.h: Fix typos.
do_test (void)
{
char *p = NULL;
+ /* gcc can overwrite the success written value by scheduling instructions
+ around sprintf. It is allowed to do this since according to C99 the first
+ argument of sprintf is a character array and NULL is not a valid character
+ array. Mark the return value as volatile so that it gets reloaded on
+ return. */
+ volatile int ret = 0;
struct sigaction sa;
sa.sa_handler = sig_handler;
if (setjmp (jmpbuf))
{
puts ("Exiting main...");
- return 0;
+ return ret;
}
sprintf (p, "This should segv\n");