X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FUSB%2FCore%2Fusb_lowlevel.c;h=0e53bad940bee2f6bc512b338c316f80b514f6f2;hb=8de6b4e1a2050289458d6489551eb61b6c1d3645;hp=65365d3be22a46e8adf49c9528ffefaf794f2386;hpb=a79a695585e69376330fd6b83b32a573d7df9dc7;p=tpg%2Facess2.git diff --git a/Modules/USB/Core/usb_lowlevel.c b/Modules/USB/Core/usb_lowlevel.c index 65365d3b..0e53bad9 100644 --- a/Modules/USB/Core/usb_lowlevel.c +++ b/Modules/USB/Core/usb_lowlevel.c @@ -122,8 +122,15 @@ char *USB_int_GetDeviceString(tUSBDevice *Dev, int Endpoint, int Index) struct sDescriptor_String str; int src_len, new_len; char *ret; + + if(Index == 0) return strdup(""); USB_int_ReadDescriptor(Dev, Endpoint, 3, Index, sizeof(str), &str); + if(str.Length < 2) { + Log_Error("USB", "String %p:%i:%i:%i descriptor is undersized (%i)", + Dev->Host, Dev->Address, Endpoint, Index, str.Length); + return NULL; + } // if(str.Length > sizeof(str)) { // // IMPOSSIBLE! // Log_Error("USB", "String is %i bytes, which is over prealloc size (%i)",