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.
This commit is contained in:
John Darrington
2019-01-04 09:44:58 +01:00
parent 39f286cd58
commit 448b8ca865
2 changed files with 5 additions and 3 deletions

View File

@ -1,6 +1,8 @@
2019-01-09 John Darrington <john@darrington.wattle.id.au> 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. zero.
2019-01-09 Andrew Paprocki <andrew@ishiboo.com> 2019-01-09 Andrew Paprocki <andrew@ishiboo.com>

View File

@ -351,7 +351,7 @@ print_insn_s12z (bfd_vma memaddr, struct disassemble_info* info)
(struct mem_read_abstraction_base *) &mra); (struct mem_read_abstraction_base *) &mra);
(info->fprintf_func) (info->stream, "%s", mnemonics[(long)operator]); (info->fprintf_func) (info->stream, "%s", mnemonics[(long)operator]);
/* Ship out size sufficies for those instructions which /* Ship out size sufficies for those instructions which
need them. */ need them. */
if (osize == -1) if (osize == -1)
@ -359,7 +359,7 @@ print_insn_s12z (bfd_vma memaddr, struct disassemble_info* info)
bool suffix = false; bool suffix = false;
for (o = 0; o < n_operands; ++o) for (o = 0; o < n_operands; ++o)
{ {
if (operands[o]->osize != -1) if (operands[o] && operands[o]->osize != -1)
{ {
if (!suffix) if (!suffix)
{ {