ubsan: arm-dis.c index out of bounds
authorAlan Modra <amodra@gmail.com>
Mon, 12 Sep 2022 08:39:24 +0000 (18:09 +0930)
committerAlan Modra <amodra@gmail.com>
Wed, 14 Sep 2022 00:49:56 +0000 (10:19 +0930)
We are way off in the weeds with this one, and will be printing
<UNPREDICTABLE> for S > 10.

* arm-dis.c (print_insn_cde): Wrap 'T' value.

opcodes/arm-dis.c

index c1bf276b42300fbaaa1f291cfe2c82aba8f01342..684c74f7f20854dd9ac16eb2bc7b402e9bb28a24 100644 (file)
@@ -8957,7 +8957,7 @@ print_insn_cde (struct disassemble_info *info, long given, bool thumb)
                    break;
 
                  case 'T':
-                   func (stream, "%s", arm_regnames[value + 1]);
+                   func (stream, "%s", arm_regnames[(value + 1) & 15]);
                    break;
 
                  case 'd':