From: Don Breazeal Date: Fri, 20 Nov 2015 17:45:44 +0000 (-0800) Subject: Fix '-data-read-memory-bytes' typo/assertion X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e084c964d61e6f8582711c73738c4df132410597;p=binutils-gdb.git Fix '-data-read-memory-bytes' typo/assertion This patch fixes a typo in target.c:read_memory_robust, where it calls read_whatever_is_readable with the function arguments in the wrong order. Depending on the address being read, it can cause an xmalloc with a huge size, resulting in an assertion failure, or just read something other than what was requested. The problem only arises when GDB is handling an MI "-data-read-memory-bytes" request and the initial target_read returns an error status. Note that read_memory_robust is only called from the MI code. gdb/ChangeLog: * gdb/target.c (read_memory_robust): Call read_whatever_is_readable with arguments in the correct order. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ee1b6ad5263..5a00b5f4b09 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2015-11-19 Don Breazeal + + * target.c (read_memory_robust): Call read_whatever_is_readable + with arguments in the correct order. + 2015-11-19 Pedro Alves * remote.c (remote_query_supported): Send the "xmlRegisters=" diff --git a/gdb/target.c b/gdb/target.c index 0ae6708f81f..2365cd3bd3f 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -1836,8 +1836,9 @@ read_memory_robust (struct target_ops *ops, /* Got an error reading full chunk. See if maybe we can read some subrange. */ xfree (buffer); - read_whatever_is_readable (ops, offset + xfered_total, unit_size, - offset + xfered_total + to_read, &result); + read_whatever_is_readable (ops, offset + xfered_total, + offset + xfered_total + to_read, + unit_size, &result); xfered_total += to_read; } else