diff options
author | Don Breazeal <donb@codesourcery.com> | 2015-11-20 09:45:44 -0800 |
---|---|---|
committer | Don Breazeal <donb@codesourcery.com> | 2015-11-20 09:45:44 -0800 |
commit | e084c964d61e6f8582711c73738c4df132410597 (patch) | |
tree | 2eefd5014f8be27ca398532ca8e7f15d63303284 /gdb/target.c | |
parent | 314cf376c5b5493eeea6d3b2a357a5c832943b30 (diff) | |
download | gdb-e084c964d61e6f8582711c73738c4df132410597.zip gdb-e084c964d61e6f8582711c73738c4df132410597.tar.gz gdb-e084c964d61e6f8582711c73738c4df132410597.tar.bz2 |
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.
Diffstat (limited to 'gdb/target.c')
-rw-r--r-- | gdb/target.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gdb/target.c b/gdb/target.c index 0ae6708..2365cd3 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 |