From eb0df6ef2ac999c781b75972ef9374aa3a5b5f72 Mon Sep 17 00:00:00 2001 From: Stefan Kost Date: Mon, 29 Nov 2010 16:30:10 +0200 Subject: [PATCH] orcprogram: don't deref insn->opcode if NULL --- orc/orcprogram.c | 50 ++++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/orc/orcprogram.c b/orc/orcprogram.c index fd7d32d..69129fb 100644 --- a/orc/orcprogram.c +++ b/orc/orcprogram.c @@ -651,19 +651,20 @@ orc_program_append_2 (OrcProgram *program, const char *name, unsigned int flags, insn->flags = flags; i = 0; insn->dest_args[0] = args[i++]; - if (insn->opcode->dest_size[1] != 0) { - insn->dest_args[1] = args[i++]; - } - if (insn->opcode->src_size[0] != 0) { - insn->src_args[0] = args[i++]; - } - if (insn->opcode->src_size[1] != 0) { - insn->src_args[1] = args[i++]; - } - if (insn->opcode->src_size[2] != 0) { - insn->src_args[2] = args[i++]; + if (insn->opcode) { + if (insn->opcode->dest_size[1] != 0) { + insn->dest_args[1] = args[i++]; + } + if (insn->opcode->src_size[0] != 0) { + insn->src_args[0] = args[i++]; + } + if (insn->opcode->src_size[1] != 0) { + insn->src_args[1] = args[i++]; + } + if (insn->opcode->src_size[2] != 0) { + insn->src_args[2] = args[i++]; + } } - program->n_insns++; } @@ -763,19 +764,20 @@ orc_program_append_str_2 (OrcProgram *program, const char *name, insn->flags = flags; i = 0; insn->dest_args[0] = args[i++]; - if (insn->opcode->dest_size[1] != 0) { - insn->dest_args[1] = args[i++]; - } - if (insn->opcode->src_size[0] != 0) { - insn->src_args[0] = args[i++]; - } - if (insn->opcode->src_size[1] != 0) { - insn->src_args[1] = args[i++]; - } - if (insn->opcode->src_size[2] != 0) { - insn->src_args[2] = args[i++]; + if (insn->opcode) { + if (insn->opcode->dest_size[1] != 0) { + insn->dest_args[1] = args[i++]; + } + if (insn->opcode->src_size[0] != 0) { + insn->src_args[0] = args[i++]; + } + if (insn->opcode->src_size[1] != 0) { + insn->src_args[1] = args[i++]; + } + if (insn->opcode->src_size[2] != 0) { + insn->src_args[2] = args[i++]; + } } - program->n_insns++; } -- 2.7.4