From 99b16dbfd7aea129d617a420c5dd36257116d802 Mon Sep 17 00:00:00 2001 From: CUB3D Date: Fri, 5 Jul 2024 14:51:51 +0100 Subject: [PATCH] Fix amf3 fuzz cases --- flash-lso/src/amf3/read.rs | 18 ++++++++++++++++++ fuzz/fuzz_targets/fuzz_amf0_header.rs | 2 +- fuzz/fuzz_targets/fuzz_amf3_int_signed.rs | 4 ++-- fuzz/fuzz_targets/fuzz_amf3_int_unsigned.rs | 4 ++-- fuzz/fuzz_targets/fuzz_amf3_string.rs | 4 ++-- 5 files changed, 25 insertions(+), 7 deletions(-) diff --git a/flash-lso/src/amf3/read.rs b/flash-lso/src/amf3/read.rs index 2575db9..6a102a9 100644 --- a/flash-lso/src/amf3/read.rs +++ b/flash-lso/src/amf3/read.rs @@ -21,6 +21,12 @@ use std::rc::Rc; const REFERENCE_FLAG: u32 = 0x01; +#[cfg(fuzzing)] +/// For fuzzing +pub fn fuzz_read_int_signed(i: &[u8]) -> AMFResult<'_, i32> { + read_int_signed(i) +} + #[allow(clippy::unusual_byte_groupings)] fn read_int_signed(i: &[u8]) -> AMFResult<'_, i32> { // Read the first byte of the number @@ -51,6 +57,12 @@ fn read_int_signed(i: &[u8]) -> AMFResult<'_, i32> { Ok((i, value)) } +#[cfg(fuzzing)] +/// For fuzzing +pub fn fuzz_read_int(i: &[u8]) -> AMFResult<'_, u32> { + read_int(i) +} + #[allow(clippy::unusual_byte_groupings)] fn read_int(i: &[u8]) -> AMFResult<'_, u32> { // Read the first byte of the number @@ -158,6 +170,12 @@ impl AMF3Decoder { Ok((i, Rc::new(s))) } + #[cfg(fuzzing)] + /// For fuzzing + pub fn fuzz_parse_string<'a>(&mut self, i: &'a [u8]) -> AMFResult<'a, String> { + self.parse_string(i) + } + fn parse_string<'a>(&mut self, i: &'a [u8]) -> AMFResult<'a, String> { let (i, bytes) = self.parse_byte_stream(i)?; let bytes_str = diff --git a/fuzz/fuzz_targets/fuzz_amf0_header.rs b/fuzz/fuzz_targets/fuzz_amf0_header.rs index 676205c..f730d16 100644 --- a/fuzz/fuzz_targets/fuzz_amf0_header.rs +++ b/fuzz/fuzz_targets/fuzz_amf0_header.rs @@ -4,5 +4,5 @@ use libfuzzer_sys::fuzz_target; use flash_lso::read::Reader; fuzz_target!(|data: &[u8]| { - Reader::default().parse_header(data); + let _ = Reader::default().parse_header(data); }); diff --git a/fuzz/fuzz_targets/fuzz_amf3_int_signed.rs b/fuzz/fuzz_targets/fuzz_amf3_int_signed.rs index 8b11fc0..f61a4c6 100644 --- a/fuzz/fuzz_targets/fuzz_amf3_int_signed.rs +++ b/fuzz/fuzz_targets/fuzz_amf3_int_signed.rs @@ -1,8 +1,8 @@ #![no_main] use libfuzzer_sys::fuzz_target; -use amf::amf3; +use flash_lso::amf3::read::fuzz_read_int_signed; fuzz_target!(|data: &[u8]| { - amf3::read_int_signed(data); + let _ = fuzz_read_int_signed(data); }); diff --git a/fuzz/fuzz_targets/fuzz_amf3_int_unsigned.rs b/fuzz/fuzz_targets/fuzz_amf3_int_unsigned.rs index dbccfcd..ff8ef78 100644 --- a/fuzz/fuzz_targets/fuzz_amf3_int_unsigned.rs +++ b/fuzz/fuzz_targets/fuzz_amf3_int_unsigned.rs @@ -1,8 +1,8 @@ #![no_main] use libfuzzer_sys::fuzz_target; -use amf::amf3; +use flash_lso::amf3::read::fuzz_read_int; fuzz_target!(|data: &[u8]| { - amf3::read_int(data); + let _ = fuzz_read_int(data); }); diff --git a/fuzz/fuzz_targets/fuzz_amf3_string.rs b/fuzz/fuzz_targets/fuzz_amf3_string.rs index 5cf4965..cd250cb 100644 --- a/fuzz/fuzz_targets/fuzz_amf3_string.rs +++ b/fuzz/fuzz_targets/fuzz_amf3_string.rs @@ -1,8 +1,8 @@ #![no_main] use libfuzzer_sys::fuzz_target; -use amf::amf3; +use flash_lso::amf3; fuzz_target!(|data: &[u8]| { - amf3::parse_string(data); + let _ = amf3::read::AMF3Decoder::default().fuzz_parse_string(data); });