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 interval = env_u32("LESAVKA_UVC_INTERVAL", 0);
|
||||||
let mut max_packet = env_u32("LESAVKA_UVC_MAXPACKET", 3072);
|
let mut max_packet = env_u32("LESAVKA_UVC_MAXPACKET", 3072);
|
||||||
if env::var("LESAVKA_UVC_BULK").is_ok() {
|
if env::var("LESAVKA_UVC_BULK").is_ok() {
|
||||||
|
max_packet = max_packet.min(512);
|
||||||
|
} else {
|
||||||
max_packet = max_packet.min(1024);
|
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 format_index = data[2];
|
||||||
let frame_index = data[3];
|
let frame_index = data[3];
|
||||||
let interval = read_le32(data, 4);
|
let interval = read_le32(data, 4);
|
||||||
|
let host_payload = read_le32(data, 22);
|
||||||
|
|
||||||
if format_index == 1 {
|
if format_index == 1 {
|
||||||
out[2] = 1;
|
out[2] = 1;
|
||||||
@ -396,6 +399,10 @@ fn sanitize_streaming_control(data: &[u8], state: &UvcState) -> [u8; STREAM_CTRL
|
|||||||
if interval == state.cfg.interval {
|
if interval == state.cfg.interval {
|
||||||
write_le32(&mut out[4..8], 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
|
out
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user