From d3155db362dee12c93aa0df59de183250e32d1a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Andr=C3=A9=20Vadla=20Ravn=C3=A5s?= Date: Fri, 23 Sep 2016 20:19:16 +0200 Subject: [PATCH] Fix use of uninitialized value for some instructions Caught by Valgrind: Conditional jump or move depends on uninitialised value(s) at 0xD5BB6F: readModRM (X86DisassemblerDecoder.c:1528) by 0xD5BF02: getIDWithAttrMask (X86DisassemblerDecoder.c:1101) by 0xD5CC5E: getID (X86DisassemblerDecoder.c:1249) by 0xD5CC5E: decodeInstruction (X86DisassemblerDecoder.c:2335) by 0xD52009: X86_getInstruction (X86Disassembler.c:822) by 0xD51781: cs_disasm (cs.c:503) --- arch/X86/X86DisassemblerDecoder.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/X86/X86DisassemblerDecoder.c b/arch/X86/X86DisassemblerDecoder.c index 2fd290d585..5e87391a8b 100644 --- a/arch/X86/X86DisassemblerDecoder.c +++ b/arch/X86/X86DisassemblerDecoder.c @@ -920,6 +920,7 @@ static int readOpcode(struct InternalInstruction *insn) // printf(">>> readOpcode() = %x\n", insn->readerCursor); insn->opcodeType = ONEBYTE; + insn->firstByte = 0x00; if (insn->vectorExtensionType == TYPE_EVEX) { switch (mmFromEVEX2of4(insn->vectorExtensionPrefix[1])) {