From: John Darrington Date: Fri, 4 Jan 2019 08:44:58 +0000 (+0100) Subject: S12Z: Don't crash when disassembling invalid instructions. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=448b8ca86519cce1216c9db5f0236604a6a33320;p=binutils-gdb.git 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. --- diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index d17ee102202..cf7d55eb3f2 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,6 +1,8 @@ 2019-01-09 John Darrington - * 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 diff --git a/opcodes/s12z-dis.c b/opcodes/s12z-dis.c index 5db0b435624..d4d5fd7217f 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) {