aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--opcodes/ChangeLog6
-rw-r--r--opcodes/tic30-dis.c3
2 files changed, 9 insertions, 0 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index bc5d44f..6a4bd6f 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,9 @@
+2021-05-11 Nick Clifton <nickc@redhat.com>
+
+ PR 27840
+ * tic30-dis.c (print_insn_tic30): Prevent attempts to read beyond
+ the end of the code buffer.
+
2021-05-06 Stafford Horne <shorne@gmail.com>
PR 21464
diff --git a/opcodes/tic30-dis.c b/opcodes/tic30-dis.c
index 67d3f24..bb96c07 100644
--- a/opcodes/tic30-dis.c
+++ b/opcodes/tic30-dis.c
@@ -695,6 +695,9 @@ print_insn_tic30 (bfd_vma pc, disassemble_info *info)
struct instruction insn = { 0, NULL, NULL };
bfd_vma bufaddr = pc - info->buffer_vma;
+ if (bufaddr + 3 >= info->buffer_length)
+ return -1;
+
/* Obtain the current instruction word from the buffer. */
insn_word = (((unsigned) *(info->buffer + bufaddr) << 24)
| (*(info->buffer + bufaddr + 1) << 16)