uvc: clamp payload and accept host probe
This commit is contained in:
parent
a9f3195952
commit
2570ea69db
@ -198,6 +198,8 @@ impl UvcConfig {
|
||||
let interval = env_u32("LESAVKA_UVC_INTERVAL", 0);
|
||||
let mut max_packet = env_u32("LESAVKA_UVC_MAXPACKET", 3072);
|
||||
if env::var("LESAVKA_UVC_BULK").is_ok() {
|
||||
max_packet = max_packet.min(512);
|
||||
} else {
|
||||
max_packet = max_packet.min(1024);
|
||||
}
|
||||
|
||||
@ -386,6 +388,7 @@ fn sanitize_streaming_control(data: &[u8], state: &UvcState) -> [u8; STREAM_CTRL
|
||||
let format_index = data[2];
|
||||
let frame_index = data[3];
|
||||
let interval = read_le32(data, 4);
|
||||
let host_payload = read_le32(data, 22);
|
||||
|
||||
if format_index == 1 {
|
||||
out[2] = 1;
|
||||
@ -396,6 +399,10 @@ fn sanitize_streaming_control(data: &[u8], state: &UvcState) -> [u8; STREAM_CTRL
|
||||
if interval == state.cfg.interval {
|
||||
write_le32(&mut out[4..8], interval);
|
||||
}
|
||||
if host_payload > 0 {
|
||||
let payload = host_payload.min(state.cfg.max_packet);
|
||||
write_le32(&mut out[22..26], payload);
|
||||
}
|
||||
}
|
||||
out
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user