aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-usb/src/lib.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/embassy-usb/src/lib.rs b/embassy-usb/src/lib.rs
index 88d88cad7..9fc1e3320 100644
--- a/embassy-usb/src/lib.rs
+++ b/embassy-usb/src/lib.rs
@@ -406,6 +406,16 @@ impl<'d, D: Driver<'d>> UsbDevice<'d, D> {
406 let max_packet_size = self.control.max_packet_size(); 406 let max_packet_size = self.control.max_packet_size();
407 let mut total = 0; 407 let mut total = 0;
408 408
409 if req_length > self.control_buf.len() {
410 warn!(
411 "got CONTROL OUT with length {} higher than the control_buf len {}, rejecting.",
412 req_length,
413 self.control_buf.len()
414 );
415 self.control.reject().await;
416 return;
417 }
418
409 let chunks = self.control_buf[..req_length].chunks_mut(max_packet_size); 419 let chunks = self.control_buf[..req_length].chunks_mut(max_packet_size);
410 for (first, last, chunk) in first_last(chunks) { 420 for (first, last, chunk) in first_last(chunks) {
411 let size = match self.control.data_out(chunk, first, last).await { 421 let size = match self.control.data_out(chunk, first, last).await {