Skip to content

Commit f49b455

Browse files
AlexCharltondobrowolski-lukasz
authored andcommitted
Request exact descriptor length in get_active_configuration
1 parent ecd2fac commit f49b455

File tree

1 file changed

+5
-1
lines changed
  • embassy-usb/src/handlers

1 file changed

+5
-1
lines changed

embassy-usb/src/handlers/mod.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ impl EnumerationInfo {
7878
};
7979

8080
let mut index = None;
81+
let mut cfg_len = 0;
8182
for i in 0..self.device_desc.num_configurations {
8283
let cfg_desc_short = channel
8384
.request_descriptor::<ConfigurationDescriptor, { ConfigurationDescriptor::SIZE }>(i, false)
@@ -88,6 +89,7 @@ impl EnumerationInfo {
8889
return Err(HostError::InsufficientMemory);
8990
}
9091

92+
cfg_len = cfg_desc_short.total_len as usize;
9193
index.replace(i);
9294
break;
9395
}
@@ -97,8 +99,10 @@ impl EnumerationInfo {
9799
"Active Configuration not found on device, bad device?",
98100
))?;
99101

102+
let dest_buffer = &mut cfg_desc_buf[0..cfg_len];
103+
100104
channel
101-
.request_descriptor_bytes(ConfigurationDescriptor::DESC_TYPE, index, cfg_desc_buf)
105+
.request_descriptor_bytes(ConfigurationDescriptor::DESC_TYPE, index, dest_buffer)
102106
.await?;
103107

104108
let cfg_desc =

0 commit comments

Comments
 (0)