From fbb38f15180bdba769b230dcdcf9a7455a6a4701 Mon Sep 17 00:00:00 2001 From: Ionel-Cristinel ANICHITEI Date: Sat, 1 Jul 2023 10:44:37 +0300 Subject: [PATCH] #82: Handle 0 in `OpSize::from_raw` --- bindings/rsbddisasm/bddisasm-sys/Cargo.toml | 2 +- bindings/rsbddisasm/bddisasm/Cargo.toml | 4 ++-- bindings/rsbddisasm/bddisasm/src/decoded_instruction.rs | 3 +++ bindings/rsbddisasm/bddisasm/src/operand.rs | 1 + 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/bindings/rsbddisasm/bddisasm-sys/Cargo.toml b/bindings/rsbddisasm/bddisasm-sys/Cargo.toml index fa4ab10..f4b4be9 100644 --- a/bindings/rsbddisasm/bddisasm-sys/Cargo.toml +++ b/bindings/rsbddisasm/bddisasm-sys/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bddisasm-sys" -version = "0.2.1" +version = "0.3.0" authors = ["Cristi Anichitei "] edition = "2018" links = "bddisasm" diff --git a/bindings/rsbddisasm/bddisasm/Cargo.toml b/bindings/rsbddisasm/bddisasm/Cargo.toml index 2861851..5de7f27 100644 --- a/bindings/rsbddisasm/bddisasm/Cargo.toml +++ b/bindings/rsbddisasm/bddisasm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bddisasm" -version = "0.2.2" +version = "0.3.0" authors = ["Cristi Anichitei "] edition = "2018" license = "Apache-2.0" @@ -14,7 +14,7 @@ categories = ["api-bindings", "hardware-support"] keywords = ["disassembler", "decoder", "x86", "amd64", "x86_64"] [dependencies] -bddisasm-sys = { version = "0.2.1", path = "../bddisasm-sys" } +bddisasm-sys = { version = "0.3.0", path = "../bddisasm-sys" } [features] std = [] diff --git a/bindings/rsbddisasm/bddisasm/src/decoded_instruction.rs b/bindings/rsbddisasm/bddisasm/src/decoded_instruction.rs index 0be97ec..a092eac 100644 --- a/bindings/rsbddisasm/bddisasm/src/decoded_instruction.rs +++ b/bindings/rsbddisasm/bddisasm/src/decoded_instruction.rs @@ -1633,6 +1633,9 @@ mod tests { evex_rounding += 1; } } + + // There is no `ND_SIZE_*` macro for 0, but the size 0 is valid, so test it here. + assert_eq!(operand::OpSize::from_raw(0), Ok(operand::OpSize::Bytes(0))); } #[test] diff --git a/bindings/rsbddisasm/bddisasm/src/operand.rs b/bindings/rsbddisasm/bddisasm/src/operand.rs index b84d135..049faac 100644 --- a/bindings/rsbddisasm/bddisasm/src/operand.rs +++ b/bindings/rsbddisasm/bddisasm/src/operand.rs @@ -620,6 +620,7 @@ impl fmt::Display for OpSize { impl OpSize { pub(crate) fn from_raw(value: ffi::ND_OPERAND_SIZE) -> Result { match value { + 0 => Ok(OpSize::Bytes(0)), ffi::ND_SIZE_8BIT => Ok(OpSize::Bytes(1)), ffi::ND_SIZE_16BIT => Ok(OpSize::Bytes(2)), ffi::ND_SIZE_32BIT => Ok(OpSize::Bytes(4)),