[Pcsclite-cvs-commit] r4809 - /trunk/PCSC/src/winscard_svc.c

rousseau at users.alioth.debian.org rousseau at users.alioth.debian.org
Tue Mar 9 15:46:53 UTC 2010


Author: rousseau
Date: Tue Mar  9 15:46:52 2010
New Revision: 4809

URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=4809
Log:
read only accesses to contextsList list shall also be protected by a mutex

Modified:
    trunk/PCSC/src/winscard_svc.c

Modified: trunk/PCSC/src/winscard_svc.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/winscard_svc.c?rev=4809&op=diff
==============================================================================
--- trunk/PCSC/src/winscard_svc.c (original)
+++ trunk/PCSC/src/winscard_svc.c Tue Mar  9 15:46:52 2010
@@ -144,7 +144,9 @@
 	int listSize;
 	SCONTEXT * newContext = NULL;
 
+	(void)SYS_MutexLock(&contextsList_lock);
 	listSize = list_size(&contextsList);
+	(void)SYS_MutexUnLock(&contextsList_lock);
 
 	if (listSize >= contextMaxThreadCounter)
 	{
@@ -931,6 +933,7 @@
 static LONG MSGCleanupClient(SCONTEXT * threadContext)
 {
 	int lrv;
+	int listSize;
 
 	if (threadContext->hContext != 0)
 	{
@@ -950,6 +953,7 @@
 
 	(void)SYS_MutexLock(&contextsList_lock);
 	lrv = list_delete(&contextsList, threadContext);
+	listSize = list_size(&contextsList);
 	(void)SYS_MutexUnLock(&contextsList_lock);
 	if (lrv < 0)
 		Log2(PCSC_LOG_CRITICAL, "list_delete failed with error %x", lrv);
@@ -957,7 +961,7 @@
 	free(threadContext);
 
 	/* start a suicide alarm */
-	if (AutoExit && (list_size(&contextsList) < 1))
+	if (AutoExit && (listSize < 1))
 	{
 		Log2(PCSC_LOG_DEBUG, "Starting suicide alarm in %d seconds",
 			TIME_BEFORE_SUICIDE);




More information about the Pcsclite-cvs-commit mailing list