diff options
author | Nick Clifton <nickc@redhat.com> | 2019-10-28 15:06:32 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2019-10-28 15:06:32 +0000 |
commit | dee334510fe3940456bd282fc9da9ff9257d8483 (patch) | |
tree | 7c9b60ea86d49e14bcee229e9cefc4c946a1d0de | |
parent | 12c3e9173ee19b0479b3d51c6cf192542e9c7ae9 (diff) | |
download | gdb-dee334510fe3940456bd282fc9da9ff9257d8483.zip gdb-dee334510fe3940456bd282fc9da9ff9257d8483.tar.gz gdb-dee334510fe3940456bd282fc9da9ff9257d8483.tar.bz2 |
Prevent an illegal memory access in the xgate disassembler.
* xgate-dis.c (print_insn): Fix decoding of the XGATE_OP_DYA
operand.
-rw-r--r-- | opcodes/ChangeLog | 5 | ||||
-rw-r--r-- | opcodes/xgate-dis.c | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 74f1db2..66df911 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +2019-10-28 Nick Clifton <nickc@redhat.com> + + * xgate-dis.c (print_insn): Fix decoding of the XGATE_OP_DYA + operand. + 2019-10-25 Nick Clifton <nickc@redhat.com> * rx-dis.c (print_insn_rx): Use parenthesis to ensure correct diff --git a/opcodes/xgate-dis.c b/opcodes/xgate-dis.c index f7ae013..ee88bf9 100644 --- a/opcodes/xgate-dis.c +++ b/opcodes/xgate-dis.c @@ -169,8 +169,8 @@ print_insn (bfd_vma memaddr, struct disassemble_info* info) } else if (!strcmp (decodePTR->opcodePTR->constraints, XGATE_OP_DYA)) { - operandOne = ripBits (&operMaskReg, 3, opcodePTR, raw_code); - operandTwo = ripBits (&operMaskReg, 3, opcodePTR, raw_code); + operandOne = ripBits (&operMaskReg, 3, decodePTR->opcodePTR, raw_code); + operandTwo = ripBits (&operMaskReg, 3, decodePTR->opcodePTR, raw_code); ( *info->fprintf_func)(info->stream, " R%x, R%x", operandOne, operandTwo); } @@ -259,7 +259,7 @@ print_insn (bfd_vma memaddr, struct disassemble_info* info) else { (*info->fprintf_func)(info->stream, " unhandled mode %s", - opcodePTR->constraints); + decodePTR->opcodePTR->constraints); } perviousBin = raw_code; } |