aboutsummaryrefslogtreecommitdiff
path: root/opcodes/i386-dis.c
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2005-12-08 15:21:05 +0000
committerJan Beulich <jbeulich@novell.com>2005-12-08 15:21:05 +0000
commit272c92178a38e6a207a4b292301867dcdb294c36 (patch)
tree79998963f075be08db5efeb85e2baf9b001af097 /opcodes/i386-dis.c
parent0ba079102f920283bc5cd17805c4ea70f01fe378 (diff)
downloadgdb-272c92178a38e6a207a4b292301867dcdb294c36.zip
gdb-272c92178a38e6a207a4b292301867dcdb294c36.tar.gz
gdb-272c92178a38e6a207a4b292301867dcdb294c36.tar.bz2
opcodes/
2005-12-08 Jan Beulich <jbeulich@novell.com> * i386-dis.c (MAXLEN): Reduce to architectural limit. (fetch_data): Check for sufficient buffer size.
Diffstat (limited to 'opcodes/i386-dis.c')
-rw-r--r--opcodes/i386-dis.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index 32293a8..973682b 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -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