diff options
author | John Darrington <john@darrington.wattle.id.au> | 2019-01-04 09:44:58 +0100 |
---|---|---|
committer | John Darrington <john@darrington.wattle.id.au> | 2019-01-09 19:47:06 +0100 |
commit | 448b8ca86519cce1216c9db5f0236604a6a33320 (patch) | |
tree | bff31676ee1c6972f2c87ff582a2ca7844494531 | |
parent | 39f286cd585226ad98c2cd94ee0f96988b3696ce (diff) | |
download | gdb-448b8ca86519cce1216c9db5f0236604a6a33320.zip gdb-448b8ca86519cce1216c9db5f0236604a6a33320.tar.gz gdb-448b8ca86519cce1216c9db5f0236604a6a33320.tar.bz2 |
S12Z: Don't crash when disassembling invalid instructions.
Check for null before dereferencing an operand pointer. Normally
this situation should never arise, but could happen if a "partial"
instruction is encountered at the end of a file or section.
opcodes/
* s12z-dis.c (print_insn_s12z): Do not dereference an
operand if it is null.
-rw-r--r-- | opcodes/ChangeLog | 4 | ||||
-rw-r--r-- | opcodes/s12z-dis.c | 4 |
2 files changed, 5 insertions, 3 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index d17ee10..cf7d55e 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,6 +1,8 @@ 2019-01-09 John Darrington <john@darrington.wattle.id.au> - * s12z-dis.c (opr_emit_disassembly): Do not omit an index if it is + * s12z-dis.c (print_insn_s12z): Do not dereference an operand + if it is null. + -dis.c (opr_emit_disassembly): Do not omit an index if it is zero. 2019-01-09 Andrew Paprocki <andrew@ishiboo.com> diff --git a/opcodes/s12z-dis.c b/opcodes/s12z-dis.c index 5db0b43..d4d5fd7 100644 --- a/opcodes/s12z-dis.c +++ b/opcodes/s12z-dis.c @@ -351,7 +351,7 @@ print_insn_s12z (bfd_vma memaddr, struct disassemble_info* info) (struct mem_read_abstraction_base *) &mra); (info->fprintf_func) (info->stream, "%s", mnemonics[(long)operator]); - + /* Ship out size sufficies for those instructions which need them. */ if (osize == -1) @@ -359,7 +359,7 @@ print_insn_s12z (bfd_vma memaddr, struct disassemble_info* info) bool suffix = false; for (o = 0; o < n_operands; ++o) { - if (operands[o]->osize != -1) + if (operands[o] && operands[o]->osize != -1) { if (!suffix) { |