diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index 139d7bc..5b7bc49 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "arbitrary" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "510c76ecefdceada737ea728f4f9a84bd2e1ef29f1ba555e560940fe279954de" +checksum = "c38b6b6b79f671c25e1a3e785b7b82d7562ffc9cd3efdc98627e5668a2472490" [[package]] name = "bincode" @@ -43,9 +43,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.72" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" [[package]] name = "libfuzzer-sys" @@ -84,18 +84,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.135" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cf9235533494ea2ddcdb794665461814781c53f19d87b76e571a1c35acbad2b" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.135" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dcde03d87d4c973c04be249e7d8f0b35db1c848c487bd43032808e59dd8328d" +checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" dependencies = [ "proc-macro2", "quote", diff --git a/fuzz/fuzz_targets/compat.rs b/fuzz/fuzz_targets/compat.rs index 568089f..9014529 100644 --- a/fuzz/fuzz_targets/compat.rs +++ b/fuzz/fuzz_targets/compat.rs @@ -43,13 +43,25 @@ fuzz_target!(|data: &[u8]| { #[allow(deprecated)] let mut configv1 = bincodev1::config(); configv1.limit(1024); - let bincode_v1: Result = configv1.deserialize(data); + let bincode_v1: Result = configv1.deserialize_from(data); let bincode_v2: Result<(AllTypes, _), _> = bincode::decode_from_slice(data, config); - if bincode_v1.as_ref().ok() != bincode_v2.as_ref().ok().map(|x| &x.0) { - println!("Bytes: {:?}", data); - println!("Bincode V1: {:?}", bincode_v1); - println!("Bincode V2: {:?}", bincode_v2); - panic!("failed equality check"); + match (&bincode_v1, &bincode_v2) { + (Err(e), _) if e.to_string() == "the size limit has been reached" => {}, + (_, Err(bincode::error::DecodeError::LimitExceeded)) => {}, + (Ok(bincode_v1), Ok((bincode_v2, _))) if bincode_v1 != bincode_v2 => { + println!("Bytes: {:?}", data); + println!("Bincode V1: {:?}", bincode_v1); + println!("Bincode V2: {:?}", bincode_v2); + panic!("failed equality check"); + }, + (Ok(_), Err(_)) | (Err(_), Ok(_)) => { + println!("Bytes: {:?}", data); + println!("Bincode V1: {:?}", bincode_v1); + println!("Bincode V2: {:?}", bincode_v2); + panic!("failed equality check"); + } + + _ => {} } });