* dis-buf.c (buffer_read_memory): Give error for reading just
authorJoseph Myers <joseph@codesourcery.com>
Tue, 23 Mar 2010 15:59:45 +0000 (15:59 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Tue, 23 Mar 2010 15:59:45 +0000 (15:59 +0000)
before the start of memory.

opcodes/ChangeLog
opcodes/dis-buf.c

index 0f2321f81f1246dfec5f54fadacbc6be643eb6f4..f21923197249b37a76db46fa2ae852330601c7b6 100644 (file)
@@ -1,3 +1,8 @@
+2010-03-23  Joseph Myers  <joseph@codesourcery.com>
+
+       * dis-buf.c (buffer_read_memory): Give error for reading just
+       before the start of memory.
+
 2010-03-22  Sebastian Pop  <sebastian.pop@amd.com>
            Quentin Neill <quentin.neill@amd.com>
 
index 7e3fd63a88a13e7247c3fd7d60f9d608840ff56a..372fb96b280832ea2328f8e445a97f803d82d772 100644 (file)
@@ -1,6 +1,6 @@
 /* Disassemble from a buffer, for GNU.
    Copyright 1993, 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2005,
-   2007, 2009  Free Software Foundation, Inc.
+   2007, 2009, 2010  Free Software Foundation, Inc.
 
    This file is part of the GNU opcodes library.
 
@@ -38,6 +38,7 @@ buffer_read_memory (bfd_vma memaddr,
   unsigned int octets = (memaddr - info->buffer_vma) * opb;
 
   if (memaddr < info->buffer_vma
+      || memaddr - info->buffer_vma > max_addr_offset
       || memaddr - info->buffer_vma + end_addr_offset > max_addr_offset)
     /* Out of bounds.  Use EIO because GDB uses it.  */
     return EIO;