opcodes/
authorJan Beulich <jbeulich@novell.com>
Thu, 8 Dec 2005 15:21:05 +0000 (15:21 +0000)
committerJan Beulich <jbeulich@novell.com>
Thu, 8 Dec 2005 15:21:05 +0000 (15:21 +0000)
2005-12-08  Jan Beulich  <jbeulich@novell.com>

* i386-dis.c (MAXLEN): Reduce to architectural limit.
(fetch_data): Check for sufficient buffer size.

opcodes/ChangeLog
opcodes/i386-dis.c

index 6b2961e..d4a2b41 100644 (file)
@@ -1,5 +1,10 @@
 2005-12-08  Jan Beulich  <jbeulich@novell.com>
 
+       * i386-dis.c (MAXLEN): Reduce to architectural limit.
+       (fetch_data): Check for sufficient buffer size.
+
+2005-12-08  Jan Beulich  <jbeulich@novell.com>
+
        * i386-dis.c (OP_ST): Remove prefix in Intel mode.
 
 2005-12-08  Daniel Jacobowitz  <dan@codesourcery.com>
index 32293a8..973682b 100644 (file)
@@ -35,7 +35,7 @@
 #include "sysdep.h"
 #include "opintl.h"
 
-#define MAXLEN 20
+#define MAXLEN 15
 
 #include <setjmp.h>
 
@@ -179,10 +179,13 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr)
   struct dis_private *priv = (struct dis_private *) info->private_data;
   bfd_vma start = priv->insn_start + (priv->max_fetched - priv->the_buffer);
 
-  status = (*info->read_memory_func) (start,
-                                     priv->max_fetched,
-                                     addr - priv->max_fetched,
-                                     info);
+  if (addr <= priv->the_buffer + MAXLEN)
+    status = (*info->read_memory_func) (start,
+                                       priv->max_fetched,
+                                       addr - priv->max_fetched,
+                                       info);
+  else
+    status = -1;
   if (status != 0)
     {
       /* If we did manage to read at least one byte, then