]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Fix '-data-read-memory-bytes' typo/assertion gdb-7.10-branch
authorDon Breazeal <donb@codesourcery.com>
Wed, 10 Feb 2016 23:41:55 +0000 (15:41 -0800)
committerDon Breazeal <donb@codesourcery.com>
Wed, 10 Feb 2016 23:42:15 +0000 (15:42 -0800)
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
gdb/target.c

index 24589c833ac94795e539816ba9171453e9adf951..220625953c051cd31e9a1ed3d446cb614dd8b681 100644 (file)
@@ -1,3 +1,8 @@
+2015-11-19  Don Breazeal  <donb@codesourcery.com>
+
+       * target.c (read_memory_robust): Call read_whatever_is_readable
+       with arguments in the correct order.
+
 2015-12-05  Joel Brobecker  <brobecker@adacore.com>
 
        * version.in: Set GDB version number to 7.10.1.DATE-cvs.
index 4dd991a93148c70f79861eba5b81856942034473..4731491c28b1ce06fe807a257547372c569b100c 100644 (file)
@@ -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