[binutils-gdb] Fix illegal memory access triggered when attempting to assemble a bogus i386 source file.

Nick Clifton nickc@sourceware.org
Tue May 14 11:43:00 GMT 2019


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=35015cd193be5e603ed31c14472d2d9d17e14e7a

commit 35015cd193be5e603ed31c14472d2d9d17e14e7a
Author: Nick Clifton <nickc@redhat.com>
Date:   Tue May 14 12:42:02 2019 +0100

    Fix illegal memory access triggered when attempting to assemble a bogus i386 source file.
    
    	PR 24538
    	* config/tc-i386-intel.c (i386_intel_simplify_register): Reject
    	illegal register numbers.

Diff:
---
 gas/ChangeLog              | 6 ++++++
 gas/config/tc-i386-intel.c | 6 ++++++
 2 files changed, 12 insertions(+)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index 57be175..1530ebf 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2019-05-14  Nick Clifton  <nickc@redhat.com>
+
+	PR 24538
+	* config/tc-i386-intel.c (i386_intel_simplify_register): Reject
+	illegal register numbers.
+
 2019-05-10  Nick Clifton  <nickc@redhat.com>
 
 	PR 24538
diff --git a/gas/config/tc-i386-intel.c b/gas/config/tc-i386-intel.c
index a12886d..a2cd286 100644
--- a/gas/config/tc-i386-intel.c
+++ b/gas/config/tc-i386-intel.c
@@ -270,6 +270,12 @@ i386_intel_simplify_register (expressionS *e)
   else
     reg_num = e->X_md - 1;
 
+  if (reg_num < 0 || reg_num >= (int) i386_regtab_size)
+    {
+      as_bad (_("invalid register number"));
+      return 0;
+    }
+
   if (!intel_state.in_bracket)
     {
       if (i.op[this_operand].regs)



More information about the Binutils-cvs mailing list