INNER CODE UNIT · Rust

split_assemble_hid_packets

google/OpenSK · libraries/opensk/fuzz/fuzz_helper/src/lib.rs:256

pub fn split_assemble_hid_packets(data: &[u8]) -> arbitrary::Result<()> {
    let mut unstructured = Unstructured::new(data);

    let mut env = TestEnv::default();
    env.seed_rng_from_u64(u64::arbitrary(&mut unstructured)?);

    let data = unstructured.take_rest();
    let message = raw_to_message(data);
    if let Some(hid_packet_iterator) = HidPacketIterator::new(message.clone()) {
        let mut assembler = MessageAssembler::default();
        let packets: Vec<HidPacket> = hid_packet_iterator.collect();
        if let Some((last_packet, first_packets)) = packets.split_last() {
            for packet in first_packets {
                let (cid, processed_pkt) = CtapHid::<TestEnv>::process_single_packet(packet);
                assert_eq!(
                    assembler.parse_packet(&mut env, cid, processed_pkt),
                    Ok(None)
                );

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…