diff options
| author | iximeow <me@iximeow.net> | 2021-07-03 15:51:22 -0700 | 
|---|---|---|
| committer | iximeow <me@iximeow.net> | 2021-07-03 15:51:22 -0700 | 
| commit | 7e154da8e2bd7b8892bdefe2f71c111c2135b0a3 (patch) | |
| tree | b1b945803f37c48a7dd7e5a23e0656ee1d9c83b9 /src/long_mode | |
| parent | 582c4e44579d4bbb9dcec9d12c23c8b774db3cfb (diff) | |
be more strict about denying invalid operands
Diffstat (limited to 'src/long_mode')
| -rw-r--r-- | src/long_mode/mod.rs | 2 | ||||
| -rw-r--r-- | src/long_mode/vex.rs | 6 | 
2 files changed, 6 insertions, 2 deletions
diff --git a/src/long_mode/mod.rs b/src/long_mode/mod.rs index f8704c0..f2b2b57 100644 --- a/src/long_mode/mod.rs +++ b/src/long_mode/mod.rs @@ -6943,7 +6943,7 @@ fn read_0f38_opcode(opcode: u8, prefixes: &mut Prefixes) -> OpcodeRecord {  fn read_0f3a_opcode(opcode: u8, prefixes: &mut Prefixes) -> OpcodeRecord {      if prefixes.rep() { -        if prefixes.operand_size() || prefixes.repnz() { +        if prefixes != &Prefixes::new(0x10) {              return OpcodeRecord(Interpretation::Instruction(Opcode::Invalid), OperandCode::Nothing);          }          return match opcode { diff --git a/src/long_mode/vex.rs b/src/long_mode/vex.rs index 7f8252f..d69a411 100644 --- a/src/long_mode/vex.rs +++ b/src/long_mode/vex.rs @@ -1599,7 +1599,11 @@ fn read_vex_instruction<T: Reader<<Arch as yaxpeax_arch::Arch>::Address, <Arch a                          } else {                              VEXOperandCode::G_V_E_xmm                          }), -                        0x16 => (Opcode::VMOVHPD, VEXOperandCode::G_V_M_xmm), +                        0x16 => (Opcode::VMOVHPD, if L { +                            return Err(DecodeError::InvalidOpcode); +                        } else { +                            VEXOperandCode::G_V_M_xmm +                        }),                          0x17 => (Opcode::VMOVHPD, if L {                              instruction.opcode = Opcode::Invalid;                              return Err(DecodeError::InvalidOpcode);  | 
