aboutsummaryrefslogtreecommitdiff
path: root/gdb/target.c
diff options
context:
space:
mode:
authorDon Breazeal <donb@codesourcery.com>2015-11-20 09:45:44 -0800
committerDon Breazeal <donb@codesourcery.com>2015-11-20 09:45:44 -0800
commite084c964d61e6f8582711c73738c4df132410597 (patch)
tree2eefd5014f8be27ca398532ca8e7f15d63303284 /gdb/target.c
parent314cf376c5b5493eeea6d3b2a357a5c832943b30 (diff)
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.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gdb/target.c b/gdb/target.c
index 0ae6708f81..2365cd3bd3 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