Resolved comments

This commit is contained in:
mingxguo27
2020-09-17 14:13:27 +00:00
parent 3a6a78bbf2
commit 6e8eecce59
2 changed files with 8 additions and 21 deletions

View File

@@ -1,4 +1,3 @@
[package]
name = "ctap2-fuzz"
version = "0.0.0"

View File

@@ -15,10 +15,10 @@ const DUMMY_TIMESTAMP: Timestamp<isize> = Timestamp::from_ms(0);
const PACKET_TYPE_MASK: u8 = 0x80;
// Converts a byte slice into Message
fn raw_to_message(data: &[u8], len: usize) -> Message {
if len <= 4 {
fn raw_to_message(data: &[u8]) -> Message {
if data.len() <= 4 {
let mut cid = [0; 4];
cid[..len].copy_from_slice(data);
cid[..data.len()].copy_from_slice(data);
Message {
cid,
cmd: 0,
@@ -35,30 +35,18 @@ fn raw_to_message(data: &[u8], len: usize) -> Message {
/* Fuzzing HID packets splitting and assembling functions*/
fuzz_target!(|data: &[u8]| {
let Message {
cid,
mut cmd,
payload,
} = raw_to_message(data, data.len());
if let Some(hid_packet_iterator) = HidPacketIterator::new(Message {
cid,
cmd,
payload: payload.clone(),
}) {
let mut message = raw_to_message(data);
if let Some(hid_packet_iterator) = HidPacketIterator::new(message.clone()) {
let mut assembler = MessageAssembler::new();
let packets: Vec<HidPacket> = hid_packet_iterator.collect();
if let Some((last_packet, first_packets)) = packets.split_last() {
for packet in first_packets {
assert_eq!(assembler.parse_packet(packet, DUMMY_TIMESTAMP), Ok(None));
}
cmd = cmd & !PACKET_TYPE_MASK;
message.cmd &= !PACKET_TYPE_MASK;
assert_eq!(
assembler.parse_packet(last_packet, DUMMY_TIMESTAMP),
Ok(Some(Message {
cid,
cmd,
payload: payload.clone()
}))
Ok(Some(message.clone()))
);
}
}