diff options
-rw-r--r-- | src/lib.rs | 4 | ||||
-rw-r--r-- | test/test.rs | 5 |
2 files changed, 8 insertions, 1 deletions
@@ -4696,6 +4696,10 @@ fn read_instr<T: Iterator<Item=u8>>(decoder: &InstDecoder, mut bytes_iter: T, in 0x67 => { prefixes.set_address_size(); }, + 0x9b => { + // TODO: WAIT prefix + return Err(DecodeError::IncompleteDecoder); + }, 0xf0 => { prefixes.set_lock(); }, diff --git a/test/test.rs b/test/test.rs index 07d715c..8c8ad25 100644 --- a/test/test.rs +++ b/test/test.rs @@ -4,7 +4,7 @@ extern crate yaxpeax_x86; use std::fmt::Write; use yaxpeax_arch::{Decoder, LengthedInstruction}; -use yaxpeax_x86::{Instruction, InstDecoder}; +use yaxpeax_x86::{DecodeError, Instruction, InstDecoder}; fn test_invalid(data: &[u8]) { test_invalid_under(&InstDecoder::default(), data); @@ -374,6 +374,9 @@ fn test_prefixes() { test_display(&[0x66, 0x41, 0x31, 0xc0], "xor r8w, ax"); test_display(&[0x66, 0x41, 0x32, 0xc0], "xor al, r8b"); test_display(&[0x40, 0x32, 0xc5], "xor al, bpl"); + + // test that WAIT doesn't blow up, at least... + assert_eq!(InstDecoder::default().decode([0x9b, 0xf8].iter().cloned()).err(), Some(DecodeError::IncompleteDecoder)); } #[test] |