--- /usr/src/linux/drivers/usb/storage/carry_fex.c Tue Jan 1 16:36:22 2002 +++ ./carry_fex.c Wed Jan 2 16:54:29 2002 @@ -33,6 +33,7 @@ #define FALSE 0 #define TRUE 1 +#define EndGetI16(a) ((((a)[1])<<8)|((a)[0])) int flen(FILE *f) { @@ -89,11 +90,13 @@ BOOL IsFirmware(void *ptr) { PFirmwareRecord fw = (PFirmwareRecord)ptr; - int i; + int i, len; + + len = EndGetI16((unsigned char *)ptr); // General.,, // - if( fw->Len > 16 ) + if( len > 16 ) return FALSE; if( fw->Pad !=0 ) @@ -101,12 +104,12 @@ switch( fw->Type ){ case 0: // Data rec. - if( fw->Len == 0 ) + if( len == 0 ) return FALSE; break; case 1: // Termination rec. - if( fw->Len != 0 ) + if( len != 0 ) return FALSE; break; @@ -114,7 +117,7 @@ return FALSE; } - for(i=fw->Len;i<16;i++){ + for(i=len;i<16;i++){ if( fw->Data[i] != 0 ) return FALSE; } @@ -259,7 +262,7 @@ break; } - rawlen += fw->Len; + rawlen += EndGetI16((unsigned char *)ptr); } if( terminated ){