[binutils-gdb] PR26460 UBSAN: tc-ia64.c:6107 index out of bounds
Alan Modra
amodra@sourceware.org
Fri Aug 28 13:46:20 GMT 2020
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ed2ed4dcf4ae20b9a7c38ffdf379fef383c6b8f9
commit ed2ed4dcf4ae20b9a7c38ffdf379fef383c6b8f9
Author: Alan Modra <amodra@gmail.com>
Date: Fri Aug 28 23:09:29 2020 +0930
PR26460 UBSAN: tc-ia64.c:6107 index out of bounds
PR 26460
* config/tc-ia64.c (parse_operands): Don't access past end of
idesc->operands.
Diff:
---
gas/ChangeLog | 6 ++++++
gas/config/tc-ia64.c | 6 ++++--
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 63d1596eba4..9bdbb4b172f 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2020-08-28 Alan Modra <amodra@gmail.com>
+
+ PR 26460
+ * config/tc-ia64.c (parse_operands): Don't access past end of
+ idesc->operands.
+
2020-08-26 Mark Wielaard <mark@klomp.org>
* as.c (parse_args): Handle bad -gdwarf options.
diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c
index f827e459df2..0e60416f1b2 100644
--- a/gas/config/tc-ia64.c
+++ b/gas/config/tc-ia64.c
@@ -6098,8 +6098,10 @@ parse_operands (struct ia64_opcode *idesc)
{
if (i < NELEMS (CURR_SLOT.opnd))
{
- sep = parse_operand_maybe_eval (CURR_SLOT.opnd + i, '=',
- idesc->operands[i]);
+ enum ia64_opnd op = IA64_OPND_NIL;
+ if (i < NELEMS (idesc->operands))
+ op = idesc->operands[i];
+ sep = parse_operand_maybe_eval (CURR_SLOT.opnd + i, '=', op);
if (CURR_SLOT.opnd[i].X_op == O_absent)
break;
}
More information about the Binutils-cvs
mailing list