[Pcsclite-cvs-commit] r5881 - /trunk/PCSC/src/winscard_clnt.c

rousseau at users.alioth.debian.org rousseau at users.alioth.debian.org
Mon Aug 8 14:17:28 UTC 2011


Author: rousseau
Date: Mon Aug  8 14:17:27 2011
New Revision: 5881

URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=5881
Log:
SCardGetStatusChange(): check all the readers are already known and
return SCARD_E_UNKNOWN_READER if a reader name is not present.

Windows XP has this behavior.

Modified:
    trunk/PCSC/src/winscard_clnt.c

Modified: trunk/PCSC/src/winscard_clnt.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/winscard_clnt.c?rev=5881&op=diff
==============================================================================
--- trunk/PCSC/src/winscard_clnt.c (original)
+++ trunk/PCSC/src/winscard_clnt.c Mon Aug  8 14:17:27 2011
@@ -1874,6 +1874,31 @@
 	if (rv != SCARD_S_SUCCESS)
 		goto end;
 
+	/* check all the readers are already known */
+	for (j=0; j<cReaders; j++)
+	{
+		const char *readerName;
+		int i;
+
+		readerName = rgReaderStates[j].szReader;
+		for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
+		{
+			if (strcmp(readerName, readerStates[i].readerName) == 0)
+				break;
+		}
+
+		/* The requested reader name is not recognized */
+		if (i == PCSCLITE_MAX_READERS_CONTEXTS)
+		{
+			/* PnP special reader? */
+			if (strcasecmp(readerName, "\\\\?PnP?\\Notification") != 0)
+			{
+				rv = SCARD_E_UNKNOWN_READER;
+				goto end;
+			}
+		}
+	}
+
 	/* Clear the event state for all readers */
 	for (j = 0; j < cReaders; j++)
 		rgReaderStates[j].dwEventState = 0;




More information about the Pcsclite-cvs-commit mailing list