diff options
-rw-r--r-- | gdb/gdbserver/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/gdbserver/server.c | 13 |
2 files changed, 17 insertions, 5 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index eba9cecb76b..88cd10116a1 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,12 @@ +2013-02-19 Pedro Alves <palves@redhat.com> + Kai Tietz <ktietz@redhat.com> + + PR gdb/15161 + + * server.c (handle_query) <CRC check>: Use unpack_varlen_hex + instead of strtoul to extract address from packet. + (process_serial_event) <'z'>: Likewise. + 2013-02-18 Yao Qi <yao@codesourcery.com> * linux-bfin-low.c (the_low_target): Use NULL instead of 0. diff --git a/gdb/gdbserver/server.c b/gdb/gdbserver/server.c index 775d9efe025..371647c0666 100644 --- a/gdb/gdbserver/server.c +++ b/gdb/gdbserver/server.c @@ -1808,12 +1808,12 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) { /* CRC check (compare-section). */ char *comma; - CORE_ADDR base; + ULONGEST base; int len; unsigned long long crc; require_running (own_buf); - base = strtoul (own_buf + 5, &comma, 16); + comma = unpack_varlen_hex (own_buf + 5, &base); if (*comma++ != ',') { write_enn (own_buf); @@ -3192,13 +3192,16 @@ process_serial_event (void) /* Fallthrough. */ case 'z': /* remove_ ... */ { - char *lenptr; char *dataptr; - CORE_ADDR addr = strtoul (&own_buf[3], &lenptr, 16); - int len = strtol (lenptr + 1, &dataptr, 16); + ULONGEST addr; + int len; char type = own_buf[1]; int res; const int insert = ch == 'Z'; + char *p = &own_buf[3]; + + p = unpack_varlen_hex (p, &addr); + len = strtol (p + 1, &dataptr, 16); /* Default to unrecognized/unsupported. */ res = 1; |