[Pcsclite-cvs-commit] r5304 - in /trunk/PCSC/src: pcsc-wirecheck-gen.c winscard.c winscard_clnt.c winscard_msg.h winscard_svc.c

rousseau at users.alioth.debian.org rousseau at users.alioth.debian.org
Tue Oct 12 11:40:22 UTC 2010


Author: rousseau
Date: Tue Oct 12 11:40:20 2010
New Revision: 5304

URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=5304
Log:
A large part of SCardStatus() is done on the client side using
readerStates[]. So remove a few lines of dead code on the server side.  

Modified:
    trunk/PCSC/src/pcsc-wirecheck-gen.c
    trunk/PCSC/src/winscard.c
    trunk/PCSC/src/winscard_clnt.c
    trunk/PCSC/src/winscard_msg.h
    trunk/PCSC/src/winscard_svc.c

Modified: trunk/PCSC/src/pcsc-wirecheck-gen.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/pcsc-wirecheck-gen.c?rev=5304&op=diff
==============================================================================
--- trunk/PCSC/src/pcsc-wirecheck-gen.c (original)
+++ trunk/PCSC/src/pcsc-wirecheck-gen.c Tue Oct 12 11:40:20 2010
@@ -1,7 +1,7 @@
 /*
  * Copyright (C) 2007
  *  Jacob Berkman
- * Copyright (C) 2007-2009
+ * Copyright (C) 2007-2010
  *  Ludovic Rousseau <ludovic.rousseau at free.fr>
  */
 
@@ -186,12 +186,6 @@
     BLANK_LINE ();
     CHECK_STRUCT (status_struct);
     CHECK_MEMBER (status_struct, hCard);
-    CHECK_MEMBER (status_struct, mszReaderNames);
-    CHECK_MEMBER (status_struct, pcchReaderLen);
-    CHECK_MEMBER (status_struct, dwState);
-    CHECK_MEMBER (status_struct, dwProtocol);
-    CHECK_MEMBER (status_struct, pbAtr);
-    CHECK_MEMBER (status_struct, pcbAtrLen);
     CHECK_MEMBER (status_struct, rv);
 
     BLANK_LINE ();

Modified: trunk/PCSC/src/winscard.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/winscard.c?rev=5304&op=diff
==============================================================================
--- trunk/PCSC/src/winscard.c (original)
+++ trunk/PCSC/src/winscard.c Tue Oct 12 11:40:20 2010
@@ -1191,8 +1191,15 @@
 {
 	LONG rv;
 	READER_CONTEXT * rContext = NULL;
-	char *readerName;
-	unsigned int readerLen;
+
+	/* These parameters are not used by the client
+	 * Client side code uses readerStates[] instead */
+	(void)mszReaderNames;
+	(void)pcchReaderLen;
+	(void)pdwState;
+	(void)pdwProtocol;
+	(void)pbAtr;
+	(void)pcbAtrLen;
 
 	if (hCard == 0)
 		return SCARD_E_INVALID_HANDLE;
@@ -1237,79 +1244,6 @@
 	rv = RFCheckReaderStatus(rContext);
 	if (rv != SCARD_S_SUCCESS)
 		return rv;
-
-	readerName = rContext->readerState->readerName;
-	readerLen = strlen(readerName);
-
-	if (mszReaderNames)
-	{  /* want reader name */
-		if (pcchReaderLen)
-		{ /* & present reader name length */
-			*pcchReaderLen = readerLen;
-			if (*pcchReaderLen >= readerLen)
-			{ /* & enough room */
-				strncpy(mszReaderNames, readerName, MAX_READERNAME);
-			}
-			else
-			{        /* may report only reader name len */
-				rv = SCARD_E_INSUFFICIENT_BUFFER;
-			}
-		}
-		else
-		{            /* present buf & no buflen */
-			return SCARD_E_INVALID_PARAMETER;
-		}
-	}
-	else
-	{
-		if (pcchReaderLen)
-		{ /* want reader len only */
-			*pcchReaderLen = readerLen;
-		}
-		else
-		{
-		/* nothing todo */
-		}
-	}
-
-	if (pdwState)
-		*pdwState = rContext->readerState->readerState;
-
-	if (pdwProtocol)
-		*pdwProtocol = rContext->readerState->cardProtocol;
-
-	if (pbAtr)
-	{  /* want ATR */
-		if (pcbAtrLen)
-		{ /* & present ATR length */
-			if (*pcbAtrLen >= rContext->readerState->cardAtrLength)
-			{ /* & enough room */
-				*pcbAtrLen = rContext->readerState->cardAtrLength;
-				memcpy(pbAtr, rContext->readerState->cardAtr,
-					rContext->readerState->cardAtrLength);
-			}
-			else
-			{ /* may report only ATR len */
-				*pcbAtrLen = rContext->readerState->cardAtrLength;
-				rv = SCARD_E_INSUFFICIENT_BUFFER;
-			}
-		}
-		else
-		{ /* present buf & no buflen */
-			return SCARD_E_INVALID_PARAMETER;
-		}
-	}
-	else
-	{
-		if (pcbAtrLen)
-		{ /* want ATR len only */
-			*pcbAtrLen = rContext->readerState->cardAtrLength;
-		}
-		else
-		{
-			/* nothing todo */
-		}
-	}
 
 	return rv;
 }

Modified: trunk/PCSC/src/winscard_clnt.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/winscard_clnt.c?rev=5304&op=diff
==============================================================================
--- trunk/PCSC/src/winscard_clnt.c (original)
+++ trunk/PCSC/src/winscard_clnt.c Tue Oct 12 11:40:20 2010
@@ -1648,10 +1648,6 @@
 	/* initialise the structure */
 	memset(&scStatusStruct, 0, sizeof(scStatusStruct));
 	scStatusStruct.hCard = hCard;
-
-	/* those sizes need to be initialised */
-	scStatusStruct.pcchReaderLen = sizeof(scStatusStruct.mszReaderNames);
-	scStatusStruct.pcbAtrLen = sizeof(scStatusStruct.pbAtr);
 
 	rv = MessageSendWithHeader(SCARD_STATUS, currentContextMap->dwClientID,
 		sizeof(scStatusStruct),

Modified: trunk/PCSC/src/winscard_msg.h
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/winscard_msg.h?rev=5304&op=diff
==============================================================================
--- trunk/PCSC/src/winscard_msg.h (original)
+++ trunk/PCSC/src/winscard_msg.h Tue Oct 12 11:40:20 2010
@@ -213,12 +213,6 @@
 	struct status_struct
 	{
 		int32_t hCard;
-		char mszReaderNames[MAX_READERNAME];
-		uint32_t pcchReaderLen;
-		uint32_t dwState;
-		uint32_t dwProtocol;
-		uint8_t pbAtr[MAX_ATR_SIZE];
-		uint32_t pcbAtrLen;
 		uint32_t rv;
 	};
 

Modified: trunk/PCSC/src/winscard_svc.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/winscard_svc.c?rev=5304&op=diff
==============================================================================
--- trunk/PCSC/src/winscard_svc.c (original)
+++ trunk/PCSC/src/winscard_svc.c Tue Oct 12 11:40:20 2010
@@ -548,38 +548,15 @@
 			case SCARD_STATUS:
 			{
 				struct status_struct stStr;
-				DWORD cchReaderLen;
-				DWORD dwState;
-				DWORD dwProtocol;
-				DWORD cbAtrLen;
 
 				READ_BODY(stStr)
 
 				if (MSGCheckHandleAssociation(stStr.hCard, threadContext))
 					goto exit;
 
-				cchReaderLen = stStr.pcchReaderLen;
-				dwState = stStr.dwState;
-				dwProtocol = stStr.dwProtocol;
-				cbAtrLen = stStr.pcbAtrLen;
-
-				/* avoids buffer overflow */
-				if ((cchReaderLen > sizeof(stStr.mszReaderNames))
-					|| (cbAtrLen > sizeof(stStr.pbAtr)))
-				{
-					stStr.rv = SCARD_E_INSUFFICIENT_BUFFER ;
-				}
-				else
-				{
-					stStr.rv = SCardStatus(stStr.hCard,
-						stStr.mszReaderNames, &cchReaderLen, &dwState,
-						&dwProtocol, stStr.pbAtr, &cbAtrLen);
-
-					stStr.pcchReaderLen = cchReaderLen;
-					stStr.dwState = dwState;
-					stStr.dwProtocol = dwProtocol;
-					stStr.pcbAtrLen = cbAtrLen;
-				}
+				/* only hCard and return value are used by the client */
+				stStr.rv = SCardStatus(stStr.hCard, NULL, NULL, NULL,
+					NULL, 0, NULL);
 
 				WRITE_BODY(stStr)
 			}




More information about the Pcsclite-cvs-commit mailing list