From: Don Breazeal Date: Wed, 10 Feb 2016 23:41:55 +0000 (-0800) Subject: Fix '-data-read-memory-bytes' typo/assertion X-Git-Tag: users/ARM/embedded-gdb-7.10-branch-2016q1~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fheads%2Fgdb-7.10-branch;p=thirdparty%2Fbinutils-gdb.git Fix '-data-read-memory-bytes' typo/assertion Backported to the 7.10 branch per this thread: https://www.sourceware.org/ml/gdb-patches/2016-02/msg00134.html 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 24589c833ac..220625953c0 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-12-05 Joel Brobecker * version.in: Set GDB version number to 7.10.1.DATE-cvs. diff --git a/gdb/target.c b/gdb/target.c index 4dd991a9314..4731491c28b 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -1822,8 +1822,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