diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/gdbserver/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/gdbserver/linux-low.c | 22 | ||||
-rw-r--r-- | gdb/nat/linux-waitpid.c | 2 |
4 files changed, 24 insertions, 10 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 591fe25..193581f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2015-08-06 Pedro Alves <palves@redhat.com> + + * nat/linux-waitpid.c (my_waitpid): Only print *status if waitpid + returned > 0. + 2015-08-06 Pierre Langlois <pierre.langlois@arm.com> * common/agent.c (symbol_list) <required>: Remove. diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index e45050a..79904d9 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,8 @@ +2015-08-06 Pedro Alves <palves@redhat.com> + + * linux-low.c (linux_write_memory): Rewrite debug output to avoid + reading beyond the passed in buffer length. + 2015-08-06 Pierre Langlois <pierre.langlois@arm.com> * tracepoint.c (symbol_list) <required>: Remove. diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c index 98fffc9..2146a2c 100644 --- a/gdb/gdbserver/linux-low.c +++ b/gdb/gdbserver/linux-low.c @@ -5336,15 +5336,19 @@ linux_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, int len) if (debug_threads) { /* Dump up to four bytes. */ - unsigned int val = * (unsigned int *) myaddr; - if (len == 1) - val = val & 0xff; - else if (len == 2) - val = val & 0xffff; - else if (len == 3) - val = val & 0xffffff; - debug_printf ("Writing %0*x to 0x%08lx in process %d\n", - 2 * ((len < 4) ? len : 4), val, (long)memaddr, pid); + char str[4 * 2 + 1]; + char *p = str; + int dump = len < 4 ? len : 4; + + for (i = 0; i < dump; i++) + { + sprintf (p, "%02x", myaddr[i]); + p += 2; + } + *p = '\0'; + + debug_printf ("Writing %s to 0x%08lx in process %d\n", + str, (long) memaddr, pid); } /* Fill start and end extra bytes of buffer with existing memory data. */ diff --git a/gdb/nat/linux-waitpid.c b/gdb/nat/linux-waitpid.c index 97149bd..cbcdd95 100644 --- a/gdb/nat/linux-waitpid.c +++ b/gdb/nat/linux-waitpid.c @@ -144,7 +144,7 @@ my_waitpid (int pid, int *status, int flags) } linux_debug ("my_waitpid (%d, 0x%x): status(%x), %d\n", - pid, flags, status ? *status : -1, ret); + pid, flags, (ret > 0 && status != NULL) ? *status : -1, ret); errno = out_errno; return ret; |