diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2011-01-06 16:48:42 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2011-01-06 16:48:42 +0000 |
commit | 9f9a10691a10bea83acbb48b7a67b906efe15e6e (patch) | |
tree | 05d3b94771ead0b93c3069806e4052613618d6fc /llvm/lib | |
parent | ae67cc13a99e65b00f5e706514e2ca4e6ea880fd (diff) | |
download | bcm5719-llvm-9f9a10691a10bea83acbb48b7a67b906efe15e6e.tar.gz bcm5719-llvm-9f9a10691a10bea83acbb48b7a67b906efe15e6e.zip |
Correctly disassemble truncated asm.
Patch by Richard Simth.
llvm-svn: 122962
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c index 1fd66853f75..0af510c4cec 100644 --- a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c +++ b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c @@ -511,7 +511,8 @@ static int getIDWithAttrMask(uint16_t* instructionID, insn->opcode); if (hasModRMExtension) { - readModRM(insn); + if (readModRM(insn)) + return -1; *instructionID = decode(insn->opcodeType, instructionClass, @@ -860,7 +861,8 @@ static int readModRM(struct InternalInstruction* insn) { if (insn->consumedModRM) return 0; - consumeByte(insn, &insn->modRM); + if (consumeByte(insn, &insn->modRM)) + return -1; insn->consumedModRM = TRUE; mod = modFromModRM(insn->modRM); |