@@ -2762,7 +2762,7 @@ XhcInitializeEndpointContext (
27622762
27632763 NumEp = IfDesc -> NumEndpoints ;
27642764
2765- EpDesc = (USB_ENDPOINT_DESCRIPTOR * )(IfDesc + 1 );
2765+ EpDesc = (USB_ENDPOINT_DESCRIPTOR * )(( UINTN ) IfDesc + IfDesc -> Length );
27662766 for (EpIndex = 0 ; EpIndex < NumEp ; EpIndex ++ ) {
27672767 while (EpDesc -> DescriptorType != USB_DESC_TYPE_ENDPOINT ) {
27682768 EpDesc = (USB_ENDPOINT_DESCRIPTOR * )((UINTN )EpDesc + EpDesc -> Length );
@@ -2954,7 +2954,7 @@ XhcInitializeEndpointContext64 (
29542954
29552955 NumEp = IfDesc -> NumEndpoints ;
29562956
2957- EpDesc = (USB_ENDPOINT_DESCRIPTOR * )(IfDesc + 1 );
2957+ EpDesc = (USB_ENDPOINT_DESCRIPTOR * )(( UINTN ) IfDesc + IfDesc -> Length );
29582958 for (EpIndex = 0 ; EpIndex < NumEp ; EpIndex ++ ) {
29592959 while (EpDesc -> DescriptorType != USB_DESC_TYPE_ENDPOINT ) {
29602960 EpDesc = (USB_ENDPOINT_DESCRIPTOR * )((UINTN )EpDesc + EpDesc -> Length );
@@ -3155,7 +3155,7 @@ XhcSetConfigCmd (
31553155
31563156 MaxDci = 0 ;
31573157
3158- IfDesc = (USB_INTERFACE_DESCRIPTOR * )(ConfigDesc + 1 );
3158+ IfDesc = (USB_INTERFACE_DESCRIPTOR * )(( UINTN ) ConfigDesc + ConfigDesc -> Length );
31593159 for (Index = 0 ; Index < ConfigDesc -> NumInterfaces ; Index ++ ) {
31603160 while ((IfDesc -> DescriptorType != USB_DESC_TYPE_INTERFACE ) || (IfDesc -> AlternateSetting != 0 )) {
31613161 IfDesc = (USB_INTERFACE_DESCRIPTOR * )((UINTN )IfDesc + IfDesc -> Length );
@@ -3248,7 +3248,7 @@ XhcSetConfigCmd64 (
32483248
32493249 MaxDci = 0 ;
32503250
3251- IfDesc = (USB_INTERFACE_DESCRIPTOR * )(ConfigDesc + 1 );
3251+ IfDesc = (USB_INTERFACE_DESCRIPTOR * )(( UINTN ) ConfigDesc + ConfigDesc -> Length );
32523252 for (Index = 0 ; Index < ConfigDesc -> NumInterfaces ; Index ++ ) {
32533253 while ((IfDesc -> DescriptorType != USB_DESC_TYPE_INTERFACE ) || (IfDesc -> AlternateSetting != 0 )) {
32543254 IfDesc = (USB_INTERFACE_DESCRIPTOR * )((UINTN )IfDesc + IfDesc -> Length );
@@ -3532,7 +3532,7 @@ XhcSetInterface (
35323532 IfDescActive = NULL ;
35333533 IfDescSet = NULL ;
35343534
3535- IfDesc = (USB_INTERFACE_DESCRIPTOR * )(ConfigDesc + 1 );
3535+ IfDesc = (USB_INTERFACE_DESCRIPTOR * )(( UINTN ) ConfigDesc + ConfigDesc -> Length );
35363536 while ((UINTN ) IfDesc < ((UINTN ) ConfigDesc + ConfigDesc -> TotalLength )) {
35373537 if ((IfDesc -> DescriptorType == USB_DESC_TYPE_INTERFACE ) && (IfDesc -> Length >= sizeof (USB_INTERFACE_DESCRIPTOR ))) {
35383538 if (IfDesc -> InterfaceNumber == (UINT8 ) Request -> Index ) {
@@ -3734,7 +3734,7 @@ XhcSetInterface64 (
37343734 IfDescActive = NULL ;
37353735 IfDescSet = NULL ;
37363736
3737- IfDesc = (USB_INTERFACE_DESCRIPTOR * )(ConfigDesc + 1 );
3737+ IfDesc = (USB_INTERFACE_DESCRIPTOR * )(( UINTN ) ConfigDesc + ConfigDesc -> Length );
37383738 while ((UINTN ) IfDesc < ((UINTN ) ConfigDesc + ConfigDesc -> TotalLength )) {
37393739 if ((IfDesc -> DescriptorType == USB_DESC_TYPE_INTERFACE ) && (IfDesc -> Length >= sizeof (USB_INTERFACE_DESCRIPTOR ))) {
37403740 if (IfDesc -> InterfaceNumber == (UINT8 ) Request -> Index ) {
0 commit comments