Skip to content

Commit

Permalink
Fix amf3 fuzz cases
Browse files Browse the repository at this point in the history
  • Loading branch information
CUB3D authored and Dinnerbone committed Jul 5, 2024
1 parent c18e856 commit 99b16db
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 7 deletions.
18 changes: 18 additions & 0 deletions flash-lso/src/amf3/read.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 =
Expand Down
2 changes: 1 addition & 1 deletion fuzz/fuzz_targets/fuzz_amf0_header.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});
4 changes: 2 additions & 2 deletions fuzz/fuzz_targets/fuzz_amf3_int_signed.rs
Original file line number Diff line number Diff line change
@@ -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);
});
4 changes: 2 additions & 2 deletions fuzz/fuzz_targets/fuzz_amf3_int_unsigned.rs
Original file line number Diff line number Diff line change
@@ -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);
});
4 changes: 2 additions & 2 deletions fuzz/fuzz_targets/fuzz_amf3_string.rs
Original file line number Diff line number Diff line change
@@ -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);
});

0 comments on commit 99b16db

Please sign in to comment.