From c4a4df458ddb8b7d53de4f9120bbcd78c2f752b0 Mon Sep 17 00:00:00 2001 From: Alexis Engelke Date: Sat, 2 Nov 2019 15:53:00 +0100 Subject: [PATCH] Be more restrictive about VEX prefix combinations --- decode.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/decode.c b/decode.c index 6d63403..91b09f4 100644 --- a/decode.c +++ b/decode.c @@ -131,6 +131,10 @@ decode_prefixes(const uint8_t* buffer, int len, DecodeMode mode, if (mode == DECODE_32 && (byte & 0xc0) != 0xc0) goto out; + // VEX + REX/66/F2/F3/LOCK will #UD. + if (prefixes & (PREFIX_REX|PREFIX_REP|PREFIX_REPNZ|PREFIX_LOCK)) + return -1; + prefixes |= PREFIX_VEX; prefixes |= byte & 0x80 ? 0 : PREFIX_REXR; if (prefix == 0xc4) // 3-byte VEX