Prevent address violation problem when disassembling corrupt aarch64 binary.

PR binutils/21595
	* aarch64-dis.c (aarch64_ext_ldst_reglist): Check for an out of
	range value.
This commit is contained in:
Nick Clifton 2017-06-15 13:26:54 +01:00
parent 62b76e4b6e
commit cd3ea7c69a
2 changed files with 9 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2017-06-15 Nick Clifton <nickc@redhat.com>
PR binutils/21595
* aarch64-dis.c (aarch64_ext_ldst_reglist): Check for an out of
range value.
2017-06-15 Nick Clifton <nickc@redhat.com>
PR binutils/21588

View File

@ -409,6 +409,9 @@ aarch64_ext_ldst_reglist (const aarch64_operand *self ATTRIBUTE_UNUSED,
info->reglist.first_regno = extract_field (FLD_Rt, code, 0);
/* opcode */
value = extract_field (FLD_opcode, code, 0);
/* PR 21595: Check for a bogus value. */
if (value >= ARRAY_SIZE (data))
return 0;
if (expected_num != data[value].num_elements || data[value].is_reserved)
return 0;
info->reglist.num_regs = data[value].num_regs;