From 718b36fead887693158396b948d7f409b987c053 Mon Sep 17 00:00:00 2001 From: Don Breazeal Date: Wed, 10 Feb 2016 15:41:55 -0800 Subject: [PATCH] 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. --- gdb/ChangeLog | 5 +++++ gdb/target.c | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) 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 -- 2.39.5