You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
873 B
26 lines
873 B
diff --git glibc-2.17-c758a686/nptl/tst-cleanup2.c glibc-2.17-c758a686/nptl/tst-cleanup2.c |
|
index 5bd1609..65af0f2 100644 |
|
--- glibc-2.17-c758a686/nptl/tst-cleanup2.c |
|
+++ glibc-2.17-c758a686/nptl/tst-cleanup2.c |
|
@@ -34,6 +34,12 @@ static int |
|
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; |
|
@@ -50,7 +56,7 @@ do_test (void) |
|
if (setjmp (jmpbuf)) |
|
{ |
|
puts ("Exiting main..."); |
|
- return 0; |
|
+ return ret; |
|
} |
|
|
|
sprintf (p, "This should segv\n");
|
|
|