]> granicus.if.org Git - strace/commitdiff
Fix debug output of wait4 result (was reusing buf[] on unknown events)
authorDenys Vlasenko <dvlasenk@redhat.com>
Fri, 21 Jun 2013 14:41:50 +0000 (16:41 +0200)
committerDenys Vlasenko <dvlasenk@redhat.com>
Fri, 21 Jun 2013 14:41:50 +0000 (16:41 +0200)
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
strace.c

index f7678313a0b3633bdc59b603b6e33dcdf7079621..3fd35d9208d2ad87df88a96180287ff69fa71c0e 100644 (file)
--- a/strace.c
+++ b/strace.c
@@ -2001,7 +2001,7 @@ trace(void)
                event = ((unsigned)status >> 16);
                if (debug_flag) {
                        char buf[sizeof("WIFEXITED,exitcode=%u") + sizeof(int)*3 /*paranoia:*/ + 16];
-                       char evbuf[sizeof(",PTRACE_EVENT_?? (%u)") + sizeof(int)*3 /*paranoia:*/ + 16];
+                       char evbuf[sizeof(",EVENT_VFORK_DONE (%u)") + sizeof(int)*3 /*paranoia:*/ + 16];
                        strcpy(buf, "???");
                        if (WIFSIGNALED(status))
 #ifdef WCOREDUMP
@@ -2031,16 +2031,12 @@ trace(void)
                                        [PTRACE_EVENT_EXIT]  = "EXIT",
                                        /* [PTRACE_EVENT_STOP (=128)] would make biggish array */
                                };
-                               const char *e;
+                               const char *e = "??";
                                if (event < ARRAY_SIZE(event_names))
                                        e = event_names[event];
                                else if (event == PTRACE_EVENT_STOP)
                                        e = "STOP";
-                               else {
-                                       sprintf(buf, "?? (%u)", event);
-                                       e = buf;
-                               }
-                               sprintf(evbuf, ",PTRACE_EVENT_%s", e);
+                               sprintf(evbuf, ",EVENT_%s (%u)", e, event);
                        }
                        fprintf(stderr, " [wait(0x%04x) = %u] %s%s\n", status, pid, buf, evbuf);
                }