-
Notifications
You must be signed in to change notification settings - Fork 228
Closed
Labels
Description
If DataFrame::read_dataframe
is passed too few bytes, it will still succeed and return a dataframe with an incomplete payload.
Example:
use websocket::DataFrame;
let mut data = vec![0x8au8, 0x08, 0x19, 0xac, 0xab, 0x8a, 0x52, 0x4e, 0x05, 0x00];
println!("Incomplete header:\n {:?}", DataFrame::read_dataframe(&mut &data[..1], false));
// This doesn't make sense
println!("Incomplete payload:\n {:?}", DataFrame::read_dataframe(&mut &data[..6], false));
println!("Complete dataframe:\n {:?}", DataFrame::read_dataframe(&mut &data[..], false));
data.push(0xff);
println!("Additional data:\n {:?}", DataFrame::read_dataframe(&mut &data[..], false));
outputs
Incomplete header:
Err(NoDataAvailable)
Incomplete payload:
Ok(DataFrame { finished: true, reserved: [false, false, false], opcode: Pong, data: [25, 172, 171, 138] })
Complete dataframe:
Ok(DataFrame { finished: true, reserved: [false, false, false], opcode: Pong, data: [25, 172, 171, 138, 82, 78, 5, 0] })
Additional data:
Ok(DataFrame { finished: true, reserved: [false, false, false], opcode: Pong, data: [25, 172, 171, 138, 82, 78, 5, 0] })