diff options
author | Sean Callanan <scallanan@apple.com> | 2010-04-07 21:42:19 +0000 |
---|---|---|
committer | Sean Callanan <scallanan@apple.com> | 2010-04-07 21:42:19 +0000 |
commit | 5edca8162623b742282f5f03b0872ac3469b5bed (patch) | |
tree | cbcf2dec19ee024c1bf4efaefaac581b8364d771 /lib/Target/X86/Disassembler/X86DisassemblerDecoder.c | |
parent | c22e2fcf72780b4b66a4262c12208c2d5af2e213 (diff) |
Fixed a bug where the disassembler would allow an immediate
argument that had to be between 0 and 7 to have any value,
firing an assert later in the AsmPrinter. Now, the
disassembler rejects instructions with out-of-range values
for that immediate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100694 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/Disassembler/X86DisassemblerDecoder.c')
-rw-r--r-- | lib/Target/X86/Disassembler/X86DisassemblerDecoder.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c b/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c index db694bc2f3..d6f48b750d 100644 --- a/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c +++ b/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c @@ -1277,6 +1277,9 @@ static int readOperands(struct InternalInstruction* insn) { case ENCODING_IB: if (readImmediate(insn, 1)) return -1; + if (insn->spec->operands[index].type == TYPE_IMM3 && + insn->immediates[insn->numImmediatesConsumed - 1] > 7) + return -1; break; case ENCODING_IW: if (readImmediate(insn, 2)) |