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

Ludovic Rousseau rousseau at costa.debian.org
Mon Jul 3 12:51:59 UTC 2006


Author: rousseau
Date: 2006-07-03 12:51:59 +0000 (Mon, 03 Jul 2006)
New Revision: 2083

Modified:
   trunk/Drivers/ccid/src/ccid_usb.c
Log:
ReadUSB(): detect and ignore duplicated CCID frames


Modified: trunk/Drivers/ccid/src/ccid_usb.c
===================================================================
--- trunk/Drivers/ccid/src/ccid_usb.c	2006-06-30 14:04:33 UTC (rev 2082)
+++ trunk/Drivers/ccid/src/ccid_usb.c	2006-07-03 12:51:59 UTC (rev 2083)
@@ -249,7 +249,7 @@
 	else
 		return STATUS_UNSUCCESSFUL;
 	vendorID = strlen(keyValue);
-	alias = 0x1D;
+	alias = 0x1C;
 	for (; vendorID--;)
 		alias ^= keyValue[vendorID];
 
@@ -493,7 +493,9 @@
 {
 	int rv;
 	char debug_header[] = "<- 121234 ";
+	_ccid_descriptor *ccid_descriptor = get_ccid_descriptor(reader_index);
 
+read_again:
 	sprintf(debug_header, "<- %06X ", (int)reader_index);
 
 	rv = usb_bulk_read(usbDevice[reader_index].handle,
@@ -513,6 +515,13 @@
 
 	DEBUG_XXD(debug_header, buffer, *length);
 
+#define BSEQ_OFFSET 6
+	if (buffer[BSEQ_OFFSET] < *ccid_descriptor->pbSeq -1)
+	{
+		DEBUG_INFO("Duplicate frame detected");
+		goto read_again;
+	}
+
 	return STATUS_SUCCESS;
 } /* ReadUSB */
 




More information about the Pcsclite-cvs-commit mailing list