aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2019-12-26 16:04:20 +1030
committerAlan Modra <amodra@gmail.com>2019-12-26 17:49:03 +1030
commit100b122fc125bdf1fe768a3331a0cd413c3d1261 (patch)
tree59ee78d2faea1c0f5ae48595418fdb7a1ba0fcba
parent6c2ca6c25dbefd7192dac52e7fd156ae0f299f1f (diff)
downloadgdb-100b122fc125bdf1fe768a3331a0cd413c3d1261.zip
gdb-100b122fc125bdf1fe768a3331a0cd413c3d1261.tar.gz
gdb-100b122fc125bdf1fe768a3331a0cd413c3d1261.tar.bz2
ubsan: crx: index 5 out of bounds for type 'operand_desc const[5]'
* crx-dis.c (get_number_of_operands): Don't access operands[] out of bounds.
-rw-r--r--opcodes/ChangeLog5
-rw-r--r--opcodes/crx-dis.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 07f30e2..25c29b2 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,5 +1,10 @@
2019-12-26 Alan Modra <amodra@gmail.com>
+ * crx-dis.c (get_number_of_operands): Don't access operands[]
+ out of bounds.
+
+2019-12-26 Alan Modra <amodra@gmail.com>
+
* v850-dis.c (disassemble): Avoid signed overflow. Don't use
long vars when unsigned int will do.
diff --git a/opcodes/crx-dis.c b/opcodes/crx-dis.c
index 3834748..e44fca1 100644
--- a/opcodes/crx-dis.c
+++ b/opcodes/crx-dis.c
@@ -105,7 +105,7 @@ get_number_of_operands (void)
{
int i;
- for (i = 0; instruction->operands[i].op_type && i < MAX_OPERANDS; i++)
+ for (i = 0; i < MAX_OPERANDS && instruction->operands[i].op_type; i++)
;
return i;