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

rousseau at users.alioth.debian.org rousseau at users.alioth.debian.org
Fri Jan 15 08:59:43 UTC 2010


Author: rousseau
Date: Fri Jan 15 08:59:42 2010
New Revision: 4670

URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=4670
Log:
Only call SCardCheckSameProcess() if DO_CHECK_SAME_PROCESS is defined
(default is not defined).

Some thread libraries (on embedded systems for example) have a different
pid for each thread of a same process. So the check using getpid() is
wrong and handles are invalidated when they should not.
The PC/SC function returned SCARD_E_INVALID_HANDLE

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=4670&op=diff
==============================================================================
--- trunk/PCSC/src/winscard_clnt.c (original)
+++ trunk/PCSC/src/winscard_clnt.c Fri Jan 15 08:59:42 2010
@@ -307,11 +307,15 @@
 static LONG SCardGetSetAttrib(SCARDHANDLE hCard, int command, DWORD dwAttrId,
 	LPBYTE pbAttr, LPDWORD pcbAttrLen);
 
+#ifdef DO_CHECK_SAME_PROCESS
 static LONG SCardCheckSameProcess(void);
 #define CHECK_SAME_PROCESS \
 	rv = SCardCheckSameProcess(); \
 	if (rv != SCARD_S_SUCCESS) \
 		return rv;
+#else
+#define CHECK_SAME_PROCESS
+#endif
 
 static LONG getReaderStates(SCONTEXTMAP * currentContextMap);
 
@@ -3731,6 +3735,7 @@
 	return SCARD_S_SUCCESS;
 }
 
+#ifdef DO_CHECK_SAME_PROCESS
 static LONG SCardCheckSameProcess(void)
 {
 	/* after fork() need to restart */
@@ -3744,6 +3749,7 @@
 
 	return SCARD_S_SUCCESS;
 }
+#endif
 
 static LONG getReaderStates(SCONTEXTMAP * currentContextMap)
 {




More information about the Pcsclite-cvs-commit mailing list