[Pcsclite-cvs-commit] r6828 - trunk/Drivers/ccid/src

ludovic.rousseau at free.fr ludovic.rousseau at free.fr
Tue Jan 21 17:36:11 UTC 2014


Author: rousseau
Date: 2014-01-21 17:36:11 +0000 (Tue, 21 Jan 2014)
New Revision: 6828

Modified:
   trunk/Drivers/ccid/src/ccid_usb.c
Log:
get_end_points(): be more strict for bInterfaceClass = 255

If the bInterfaceClass is 255 (proprietary) and then not, but possibly,
a CCID interface (on an old reader) we also check the extra_length is
valid for a CCID device.

The problem was with a composite device with 2 interfaces: one non-CCID
interface with bInterfaceClass = 255 and a CCID interface with
bInterfaceClass = 11. The first non-CCID interface must be skipped.


Modified: trunk/Drivers/ccid/src/ccid_usb.c
===================================================================
--- trunk/Drivers/ccid/src/ccid_usb.c	2014-01-21 17:29:00 UTC (rev 6827)
+++ trunk/Drivers/ccid/src/ccid_usb.c	2014-01-21 17:36:11 UTC (rev 6828)
@@ -1012,7 +1012,8 @@
 		/* CCID Class? */
 		if (desc->interface[i].altsetting->bInterfaceClass == 0xb
 #ifdef ALLOW_PROPRIETARY_CLASS
-			|| desc->interface[i].altsetting->bInterfaceClass == 0xff
+			|| (desc->interface[i].altsetting->bInterfaceClass == 0xff
+			&& 54 == desc->interface[i].altsetting->extra_length)
 #endif
 			)
 		{




More information about the Pcsclite-cvs-commit mailing list