[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