Big batch of renames: strip qoi prefix everywhere
This commit is contained in:
parent
cb10dd3629
commit
328cfac40d
2 changed files with 73 additions and 72 deletions
42
fuzz/fuzz_targets/decode.rs
Normal file
42
fuzz/fuzz_targets/decode.rs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
#![no_main]
|
||||
use libfuzzer_sys::fuzz_target;
|
||||
|
||||
use qoi_fast::{decode_header, decode_to_vec, Channels, ColorSpace, Header};
|
||||
|
||||
fuzz_target!(|input: (u16, u16, bool, &[u8])| {
|
||||
let (w, h, is_4, data) = input;
|
||||
let (w, h) = (1 + w % 260, 1 + h % 260);
|
||||
let channels = if is_4 { 4 } else { 3 };
|
||||
|
||||
let mut vec = vec![
|
||||
b'q',
|
||||
b'o',
|
||||
b'i',
|
||||
b'f',
|
||||
0,
|
||||
0,
|
||||
(w >> 8) as u8,
|
||||
(w & 0xff) as u8,
|
||||
0,
|
||||
0,
|
||||
(h >> 8) as u8,
|
||||
(h & 0xff) as u8,
|
||||
channels,
|
||||
0,
|
||||
];
|
||||
vec.extend(&*data);
|
||||
vec.extend(&[0, 0, 0, 0, 0, 0, 0, 1]);
|
||||
|
||||
let header_expected = Header {
|
||||
width: w as u32,
|
||||
height: h as u32,
|
||||
channels: Channels::try_from(channels).unwrap(),
|
||||
colorspace: ColorSpace::try_from(0).unwrap(),
|
||||
};
|
||||
assert_eq!(decode_header(&vec).unwrap(), header_expected);
|
||||
|
||||
if let Ok((header, out)) = decode_to_vec(&vec) {
|
||||
assert_eq!(header, header_expected);
|
||||
assert_eq!(out.len(), header.n_bytes());
|
||||
}
|
||||
});
|
||||
25
fuzz/fuzz_targets/encode.rs
Normal file
25
fuzz/fuzz_targets/encode.rs
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
#![no_main]
|
||||
use libfuzzer_sys::fuzz_target;
|
||||
|
||||
use qoi_fast::{encode_size_limit, encode_to_vec};
|
||||
|
||||
fuzz_target!(|input: (bool, u8, &[u8])| {
|
||||
let (is_4, w_frac, data) = input;
|
||||
let channels = if is_4 { 4 } else { 3 };
|
||||
let size = data.len();
|
||||
let n_pixels = size / channels as usize;
|
||||
let (w, h) = if n_pixels == 0 {
|
||||
(0, 0)
|
||||
} else {
|
||||
let w = ((n_pixels * (1 + w_frac as usize)) / 256).max(1);
|
||||
let h = n_pixels / w;
|
||||
(w, h)
|
||||
};
|
||||
let out = encode_to_vec(&data[..(w * h * channels as usize)], w as u32, h as u32);
|
||||
if w * h != 0 {
|
||||
let out = out.unwrap();
|
||||
assert!(out.len() <= encode_size_limit(w as u32, h as u32, channels));
|
||||
} else {
|
||||
assert!(out.is_err());
|
||||
}
|
||||
});
|
||||
Loading…
Reference in a new issue