Another crash on read of an empty buffer
Output from my fuzzer:
thread '<unnamed>' panicked at 'buffer contains just 30 bytes, but you are trying to consume 32 bytes. Did you forget to call data()?', /home/capitol/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src/libstd/macros.rs:16:9
Unit test to replicate it:
#[test]
fn crash_on_empty_buffer() {
let data:[u8; 589] = [45, 4, 88, 0, 46, 0, 2, 0, 0, 0, 46, 46, 46, 32, 77, 69, 83, 83, 65, 71, 69, 45, 45, 45, 45, 45, 255, 255, 255, 0, 64, 0, 10, 10, 10, 10, 10, 10, 10, 10, 110, 110, 110, 110, 110, 110, 214, 214, 214, 214, 214, 214, 214, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 62, 10, 13, 13, 4, 30, 47, 4, 62, 10, 0, 37, 0, 10, 62, 246, 193, 245, 242, 242, 45, 66, 69, 71, 73, 78, 32, 80, 71, 80, 242, 242, 240, 13, 13, 13, 32, 77, 69, 83, 34, 34, 34, 34, 31, 31, 31, 31, 31, 31, 9, 41, 9, 31, 2, 99, 10, 93, 2, 4, 2, 255, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 13, 0, 255, 15, 0, 0, 0, 4, 13, 10, 78, 21, 50, 3, 10, 45, 245, 0, 10, 45, 245, 101, 10, 45, 10, 45, 245, 0, 16, 45, 34, 34, 18, 18, 0, 10, 45, 245, 0, 10, 45, 18, 210, 11, 101, 10, 45, 10, 45, 245, 0, 10, 45, 245, 0, 10, 45, 0, 18, 18, 18, 50, 18, 18, 0, 11, 11, 10, 11, 101, 10, 45, 18, 0, 10, 45, 245, 101, 10, 45, 10, 45, 245, 0, 10, 45, 245, 0, 10, 45, 255, 237, 237, 255, 10, 45, 10, 45, 245, 0, 10, 45, 245, 101, 10, 45, 10, 45, 245, 0, 16, 45, 34, 34, 18, 18, 0, 10, 45, 245, 0, 10, 45, 18, 210, 11, 101, 10, 45, 10, 45, 245, 0, 10, 45, 245, 0, 10, 45, 0, 18, 18, 18, 50, 18, 45, 45, 45, 45, 66, 69, 71, 73, 78, 32, 80, 71, 80, 32, 77, 69, 83, 83, 65, 71, 69, 45, 45, 45, 45, 45, 255, 255, 255, 0, 0, 0, 10, 10, 52, 52, 52, 110, 110, 45, 45, 45, 45, 69, 71, 73, 78, 32, 77, 69, 83, 0, 45, 10, 45, 245, 0, 10, 45, 245, 0, 10, 45, 0, 0, 255, 237, 237, 255, 252, 18, 0, 0, 0, 0, 0, 0, 0, 197, 0, 37, 110, 110, 110, 110, 110, 110, 110, 94, 10, 0, 0, 0, 0, 0, 0, 0, 0, 10, 125, 125, 125, 125, 125, 125, 125, 255, 255, 188, 10, 32, 0, 10, 13, 13, 13, 62, 10, 54, 10, 13, 13, 45, 45, 45, 45, 45, 66, 69, 71, 73, 78, 32, 80, 71, 80, 32, 77, 69, 83, 83, 65, 71, 69, 45, 45, 45, 45, 45, 10, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 139, 139, 139, 0, 139, 33, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 0, 0, 0, 0, 0, 0, 0, 71, 80, 32, 48, 1, 47, 4, 1, 10, 93, 32, 93, 13, 255, 255, 8, 22, 6, 6, 78, 32, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 22, 4, 22, 22, 22, 22, 22];
let t = sequoia_openpgp_ffi::parse::pgp_packet_parser_from_bytes(core::option::Option::None, &data[0], data.len());
println!("{:?}", t);
}