Hi, Evgenv

Thanks for your contribution, Evgenv

Could you let me know what error case you met? Is the Device Desc or Config 
Desc larger than expected or other descs?

Why I ask this question is because it would impact Xhci driver's implementation 
in which we store some desc contents at internal. So looks like XHCI driver 
also needs to be updated.

Thanks
Feng

-----Original Message-----
From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Evgeny 
Yakovlev
Sent: Sunday, June 5, 2016 10:29 PM
To: edk2-devel@lists.01.org
Subject: [edk2] [PATCH] MdeModulePkg/UsbBusDxe: Fixed USB descriptor length 
check

According to spec if the length of a descriptor is smaller than what the 
specification defines, then the host shall ignore it.
However if the size is greater than expected the host will ignore the extra 
bytes and start looking for the next descriptor at the end of actual length 
returned. Original check did not handle the latter case correctly and only 
allowed descriptors with lengths exactly as defined in specification.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Evgeny Yakovlev <insorei...@gmail.com>
---
 MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c 
b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c
index 5b8b1aa..fba60da 100644
--- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c
+++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c
@@ -199,8 +199,8 @@ UsbCreateDesc (
     }
   }
 
-  if ((Len <= Offset)      || (Len < Offset + DescLen) ||
-      (Head->Type != Type) || (Head->Len != DescLen)) {
+  if ((Len <= Offset)      || (Len < Offset + Head->Len) ||
+      (Head->Type != Type) || (Head->Len < DescLen)) {
     DEBUG (( EFI_D_ERROR, "UsbCreateDesc: met mal-format descriptor\n"));
     return NULL;
   }
--
2.7.4 (Apple Git-66)

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to