From: <as...@us...> - 2010-01-26 10:24:32
|
Revision: 1560 http://rdesktop.svn.sourceforge.net/rdesktop/?rev=1560&view=rev Author: astrand Date: 2010-01-26 10:24:26 +0000 (Tue, 26 Jan 2010) Log Message: ----------- Avoid a few more compile warnings. This file should now build without warnings on 32 bit platforms, when debugging is not enabled. Modified Paths: -------------- rdesktop/trunk/scard.c Modified: rdesktop/trunk/scard.c =================================================================== --- rdesktop/trunk/scard.c 2010-01-26 10:20:06 UTC (rev 1559) +++ rdesktop/trunk/scard.c 2010-01-26 10:24:26 UTC (rev 1560) @@ -39,7 +39,9 @@ /* variable segment */ #define SCARD_MAX_MEM 102400 +#ifndef SCARD_AUTOALLOCATE #define SCARD_AUTOALLOCATE -1 +#endif #define OUT_STREAM_SIZE 4096 #ifdef B_ENDIAN @@ -933,6 +935,8 @@ return rv; } +/* Currently unused */ +#if 0 static int needStatusRecheck(MYPCSC_DWORD rv, MYPCSC_LPSCARD_READERSTATE_A rsArray, SERVER_DWORD dwCount) { @@ -959,6 +963,7 @@ code &= 0x0000FFFF; return (code % 2); } +#endif static MYPCSC_DWORD incStatus(MYPCSC_DWORD code, RD_BOOL mapped) @@ -1851,6 +1856,8 @@ #ifndef WITH_PCSC120 +/* Currently unused */ +#if 0 static MYPCSC_DWORD TS_SCardListReaderGroups(STREAM in, STREAM out) { @@ -1910,6 +1917,7 @@ SC_xfreeallmemory(&lcHandle); return rv; } +#endif static MYPCSC_DWORD TS_SCardGetAttrib(STREAM in, STREAM out) @@ -2006,6 +2014,8 @@ return rv; } +/* Currently unused */ +#if 0 static MYPCSC_DWORD TS_SCardSetAttrib(STREAM in, STREAM out) { @@ -2059,6 +2069,7 @@ SC_xfreeallmemory(&lcHandle); return rv; } +#endif #endif @@ -2373,6 +2384,8 @@ return d; } +/* Currently unused */ +#if 0 static void freeStream(PMEM_HANDLE * handle, STREAM s) { @@ -2383,6 +2396,7 @@ SC_xfree(handle, s); } } +#endif static PSCThreadData SC_addToQueue(RD_NTHANDLE handle, uint32 request, STREAM in, STREAM out) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <as...@us...> - 2010-01-27 07:40:52
|
Revision: 1562 http://rdesktop.svn.sourceforge.net/rdesktop/?rev=1562&view=rev Author: astrand Date: 2010-01-27 07:40:47 +0000 (Wed, 27 Jan 2010) Log Message: ----------- Indented Modified Paths: -------------- rdesktop/trunk/scard.c Modified: rdesktop/trunk/scard.c =================================================================== --- rdesktop/trunk/scard.c 2010-01-26 12:23:53 UTC (rev 1561) +++ rdesktop/trunk/scard.c 2010-01-27 07:40:47 UTC (rev 1562) @@ -2627,11 +2627,12 @@ pthread_mutex_unlock(scard_mutex[lock]); } -void scard_reset_state() +void +scard_reset_state() { - curDevice = 0; - curId = 0; - curBytesOut = 0; + curDevice = 0; + curId = 0; + curBytesOut = 0; - queueFirst = queueLast = NULL; + queueFirst = queueLast = NULL; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <os...@us...> - 2010-06-14 07:35:06
|
Revision: 1594 http://rdesktop.svn.sourceforge.net/rdesktop/?rev=1594&view=rev Author: ossman_ Date: 2010-06-14 07:35:00 +0000 (Mon, 14 Jun 2010) Log Message: ----------- Remove undocumented voodoo in SCardGetStatusChange() as it causes the system version to return immediately, causing CPU intensive loops. Modified Paths: -------------- rdesktop/trunk/scard.c Modified: rdesktop/trunk/scard.c =================================================================== --- rdesktop/trunk/scard.c 2010-04-09 13:54:46 UTC (rev 1593) +++ rdesktop/trunk/scard.c 2010-06-14 07:35:00 UTC (rev 1594) @@ -32,6 +32,9 @@ #include <wintypes.h> #include <pcsclite.h> #include <winscard.h> +#ifdef PCSCLITE_VERSION_NUMBER +#include <reader.h> +#endif #endif /* PCSC_OSX */ #include "rdesktop.h" #include "scard.h" @@ -965,21 +968,6 @@ } #endif -static MYPCSC_DWORD -incStatus(MYPCSC_DWORD code, RD_BOOL mapped) -{ - if (mapped || (code & SCARD_STATE_CHANGED)) - { - MYPCSC_DWORD count = (code >> 16) & 0x0000FFFF; - count++; - if (mapped && !(count % 2)) - count++; - return (code & 0x0000FFFF) | (count << 16); - } - else - return code; -} - static void copyReaderState_MyPCSCToServer(MYPCSC_LPSCARD_READERSTATE_A src, SERVER_LPSCARD_READERSTATE_A dst, MYPCSC_DWORD readerCount) @@ -1027,13 +1015,9 @@ SERVER_DWORD dwTimeout; SERVER_DWORD dwCount; SERVER_LPSCARD_READERSTATE_A rsArray, cur; - SERVER_DWORD *stateArray = NULL, *curState; MYPCSC_LPSCARD_READERSTATE_A myRsArray; long i; PMEM_HANDLE lcHandle = NULL; -#if 0 - RD_BOOL mapped = False; -#endif in->p += 0x18; in_uint32_le(in, dwTimeout); @@ -1051,9 +1035,6 @@ if (!rsArray) return SC_returnNoMemoryError(&lcHandle, in, out); memset(rsArray, 0, dwCount * sizeof(SERVER_SCARD_READERSTATE_A)); - stateArray = SC_xmalloc(&lcHandle, dwCount * sizeof(MYPCSC_DWORD)); - if (!stateArray) - return SC_returnNoMemoryError(&lcHandle, in, out); /* skip two pointers at beginning of struct */ for (i = 0, cur = (SERVER_LPSCARD_READERSTATE_A) ((unsigned char **) rsArray + 2); i < dwCount; i++, cur++) @@ -1062,8 +1043,7 @@ in_uint8a(in, cur, SERVER_SCARDSTATESIZE); } - for (i = 0, cur = rsArray, curState = stateArray; - i < dwCount; i++, cur++, curState++) + for (i = 0, cur = rsArray; i < dwCount; i++, cur++) { SERVER_DWORD dataLength; @@ -1072,31 +1052,6 @@ cur->dwEventState = swap32(cur->dwEventState); cur->cbAtr = swap32(cur->cbAtr); - /* reset Current state hign bytes; */ - *curState = cur->dwCurrentState; - cur->dwCurrentState &= 0x0000FFFF; - cur->dwEventState &= 0x0000FFFF; - -#if 0 - if (cur->dwCurrentState == (SCARD_STATE_CHANGED | SCARD_STATE_PRESENT)) - { - cur->dwCurrentState = 0x00000000; - mapped = True; - } - - if (mappedStatus(*curState)) - { - cur->dwCurrentState &= ~SCARD_STATE_INUSE; - cur->dwEventState &= ~SCARD_STATE_INUSE; - - if (cur->dwCurrentState & SCARD_STATE_EMPTY) - { - cur->dwCurrentState &= ~SCARD_STATE_EMPTY; - cur->dwCurrentState |= SCARD_STATE_UNKNOWN; - } - } -#endif - in->p += 0x08; in_uint32_le(in, dataLength); inRepos(in, @@ -1110,14 +1065,11 @@ DEBUG_SCARD(("SCARD: user: 0x%08x, state: 0x%08x, event: 0x%08x\n", (unsigned) cur->pvUserData, (unsigned) cur->dwCurrentState, (unsigned) cur->dwEventState)); - DEBUG_SCARD(("SCARD: current state: 0x%08x\n", - (unsigned) *curState)); } } else { rsArray = NULL; - stateArray = NULL; } myRsArray = SC_xmalloc(&lcHandle, dwCount * sizeof(MYPCSC_SCARD_READERSTATE_A)); @@ -1144,36 +1096,8 @@ out_uint32_le(out, 0x00084dd8); out_uint32_le(out, dwCount); - for (i = 0, cur = rsArray, curState = stateArray; i < dwCount; i++, cur++, curState++) + for (i = 0, cur = rsArray; i < dwCount; i++, cur++) { - - cur->dwCurrentState = (*curState); - cur->dwEventState |= (*curState) & 0xFFFF0000; - -#if 0 - if (mapped && (cur->dwCurrentState & SCARD_STATE_PRESENT) - && (cur->dwCurrentState & SCARD_STATE_CHANGED) - && (cur->dwEventState & SCARD_STATE_PRESENT) - && (cur->dwEventState & SCARD_STATE_CHANGED)) - { - cur->dwEventState |= SCARD_STATE_INUSE; - } - else if (cur->dwEventState & SCARD_STATE_UNKNOWN) - { - cur->dwEventState &= ~SCARD_STATE_UNKNOWN; - cur->dwEventState |= SCARD_STATE_EMPTY; - mapped = True; - } - else if ((!mapped) && (cur->dwEventState & SCARD_STATE_INUSE)) - { - mapped = True; - cur->dwEventState &= ~SCARD_STATE_INUSE; - } - - cur->dwEventState = incStatus(cur->dwEventState, mapped); -#endif - cur->dwEventState = incStatus(cur->dwEventState, False); - DEBUG_SCARD(("SCARD: \"%s\"\n", cur->szReader ? cur->szReader : "NULL")); DEBUG_SCARD(("SCARD: user: 0x%08x, state: 0x%08x, event: 0x%08x\n", (unsigned) cur->pvUserData, (unsigned) cur->dwCurrentState, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <os...@us...> - 2010-06-14 07:36:02
|
Revision: 1595 http://rdesktop.svn.sourceforge.net/rdesktop/?rev=1595&view=rev Author: ossman_ Date: 2010-06-14 07:35:55 +0000 (Mon, 14 Jun 2010) Log Message: ----------- Control codes to SCardControl() are platform dependent so we need to do some translation before passing them on. Modified Paths: -------------- rdesktop/trunk/scard.c Modified: rdesktop/trunk/scard.c =================================================================== --- rdesktop/trunk/scard.c 2010-06-14 07:35:00 UTC (rev 1594) +++ rdesktop/trunk/scard.c 2010-06-14 07:35:55 UTC (rev 1595) @@ -2037,6 +2037,14 @@ in_uint8a(in, pInBuffer, nInBufferSize); } + /* Is this a proper Windows smart card ioctl? */ + if ((dwControlCode & 0xffff0000) != (49 << 16)) + return SCARD_E_INVALID_PARAMETER; + + /* Translate to local encoding */ + dwControlCode = (dwControlCode & 0x3ffc) >> 2; + dwControlCode = SCARD_CTL_CODE(dwControlCode); + #if 0 if (nOutBufferSize > 0) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <os...@us...> - 2010-06-14 07:36:58
|
Revision: 1596 http://rdesktop.svn.sourceforge.net/rdesktop/?rev=1596&view=rev Author: ossman_ Date: 2010-06-14 07:36:52 +0000 (Mon, 14 Jun 2010) Log Message: ----------- Add copyright notice. Modified Paths: -------------- rdesktop/trunk/scard.c Modified: rdesktop/trunk/scard.c =================================================================== --- rdesktop/trunk/scard.c 2010-06-14 07:35:55 UTC (rev 1595) +++ rdesktop/trunk/scard.c 2010-06-14 07:36:52 UTC (rev 1596) @@ -2,6 +2,7 @@ rdesktop: A Remote Desktop Protocol client. Smart Card support Copyright (C) Alexi Volkov <al...@my...> 2006 + Copyright 2010 Pierre Ossman <os...@ce...> for Cendio AB This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <os...@us...> - 2010-06-22 13:05:32
|
Revision: 1597 http://rdesktop.svn.sourceforge.net/rdesktop/?rev=1597&view=rev Author: ossman_ Date: 2010-06-22 13:05:26 +0000 (Tue, 22 Jun 2010) Log Message: ----------- Let bogus control codes through with a warning, in case it might work anyway. Modified Paths: -------------- rdesktop/trunk/scard.c Modified: rdesktop/trunk/scard.c =================================================================== --- rdesktop/trunk/scard.c 2010-06-14 07:36:52 UTC (rev 1596) +++ rdesktop/trunk/scard.c 2010-06-22 13:05:26 UTC (rev 1597) @@ -2038,14 +2038,20 @@ in_uint8a(in, pInBuffer, nInBufferSize); } + DEBUG_SCARD(("SCARD: SCardControl(context: 0x%08x, hcard: 0x%08x, code: 0x%08x, in: %d bytes, out: %d bytes)\n", (unsigned) hContext, (unsigned) hCard, (unsigned) dwControlCode, (int) nInBufferSize, (int) nOutBufferSize)); + /* Is this a proper Windows smart card ioctl? */ - if ((dwControlCode & 0xffff0000) != (49 << 16)) - return SCARD_E_INVALID_PARAMETER; + if ((dwControlCode & 0xffff0000) == (49 << 16)) + { + /* Translate to local encoding */ + dwControlCode = (dwControlCode & 0x3ffc) >> 2; + dwControlCode = SCARD_CTL_CODE(dwControlCode); + } + else + { + warning("Bogus smart card control code 0x%08x\n", dwControlCode); + } - /* Translate to local encoding */ - dwControlCode = (dwControlCode & 0x3ffc) >> 2; - dwControlCode = SCARD_CTL_CODE(dwControlCode); - #if 0 if (nOutBufferSize > 0) { @@ -2062,8 +2068,6 @@ if (!pOutBuffer) return SC_returnNoMemoryError(&lcHandle, in, out); - DEBUG_SCARD(("SCARD: SCardControl(context: 0x%08x, hcard: 0x%08x, code: 0x%08x, in: %d bytes, out: %d bytes)\n", (unsigned) hContext, (unsigned) hCard, (unsigned) dwControlCode, (int) nInBufferSize, (int) nOutBufferSize)); - sc_nBytesReturned = nBytesReturned; myHCard = scHandleToMyPCSC(hCard); #ifdef WITH_PCSC120 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <os...@us...> - 2010-06-22 13:06:26
|
Revision: 1598 http://rdesktop.svn.sourceforge.net/rdesktop/?rev=1598&view=rev Author: ossman_ Date: 2010-06-22 13:06:16 +0000 (Tue, 22 Jun 2010) Log Message: ----------- Translate the response to control code 3400 as it contains embedded control codes in the local encoding. Modified Paths: -------------- rdesktop/trunk/scard.c Modified: rdesktop/trunk/scard.c =================================================================== --- rdesktop/trunk/scard.c 2010-06-22 13:05:26 UTC (rev 1597) +++ rdesktop/trunk/scard.c 2010-06-22 13:06:16 UTC (rev 1598) @@ -24,6 +24,7 @@ #include <strings.h> #include <sys/types.h> #include <time.h> +#include <arpa/inet.h> #ifndef MAKE_PROTO #ifdef __APPLE__ #include <PCSC/wintypes.h> @@ -2090,6 +2091,24 @@ DEBUG_SCARD(("SCARD: -> Success (out: %d bytes)\n", (int) nBytesReturned)); } +#ifdef PCSCLITE_VERSION_NUMBER + if (dwControlCode == SCARD_CTL_CODE(3400)) + { + int i; + SERVER_DWORD cc; + + for (i = 0; i < nBytesReturned / 6; i++) + { + memcpy(&cc, pOutBuffer + 2 + i * 6, 4); + cc = ntohl(cc); + cc = cc - 0x42000000; + cc = (49 << 16) | (cc << 2); + cc = htonl(cc); + memcpy(pOutBuffer + 2 + i * 6, &cc, 4); + } + } +#endif + out_uint32_le(out, nBytesReturned); out_uint32_le(out, 0x00000004); out_uint32_le(out, nBytesReturned); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <os...@us...> - 2010-06-22 13:06:56
|
Revision: 1599 http://rdesktop.svn.sourceforge.net/rdesktop/?rev=1599&view=rev Author: ossman_ Date: 2010-06-22 13:06:50 +0000 (Tue, 22 Jun 2010) Log Message: ----------- Some operations consist of just the control code, no data. Modified Paths: -------------- rdesktop/trunk/scard.c Modified: rdesktop/trunk/scard.c =================================================================== --- rdesktop/trunk/scard.c 2010-06-22 13:06:16 UTC (rev 1598) +++ rdesktop/trunk/scard.c 2010-06-22 13:06:50 UTC (rev 1599) @@ -2033,10 +2033,13 @@ { /* read real input size */ in_uint32_le(in, nInBufferSize); - pInBuffer = SC_xmalloc(&lcHandle, nInBufferSize); - if (!pInBuffer) - return SC_returnNoMemoryError(&lcHandle, in, out); - in_uint8a(in, pInBuffer, nInBufferSize); + if (nInBufferSize > 0) + { + pInBuffer = SC_xmalloc(&lcHandle, nInBufferSize); + if (!pInBuffer) + return SC_returnNoMemoryError(&lcHandle, in, out); + in_uint8a(in, pInBuffer, nInBufferSize); + } } DEBUG_SCARD(("SCARD: SCardControl(context: 0x%08x, hcard: 0x%08x, code: 0x%08x, in: %d bytes, out: %d bytes)\n", (unsigned) hContext, (unsigned) hCard, (unsigned) dwControlCode, (int) nInBufferSize, (int) nOutBufferSize)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2011-12-07 09:20:46
|
Revision: 1649 http://rdesktop.svn.sourceforge.net/rdesktop/?rev=1649&view=rev Author: hean01 Date: 2011-12-07 09:20:39 +0000 (Wed, 07 Dec 2011) Log Message: ----------- Fixes an invalid check for memory allocation. Modified Paths: -------------- rdesktop/trunk/scard.c Modified: rdesktop/trunk/scard.c =================================================================== --- rdesktop/trunk/scard.c 2011-11-25 10:03:03 UTC (rev 1648) +++ rdesktop/trunk/scard.c 2011-12-07 09:20:39 UTC (rev 1649) @@ -1167,7 +1167,7 @@ } myRsArray = SC_xmalloc(&lcHandle, dwCount * sizeof(MYPCSC_SCARD_READERSTATE_A)); - if (!rsArray) + if (!myRsArray) return SC_returnNoMemoryError(&lcHandle, in, out); memset(myRsArray, 0, dwCount * sizeof(SERVER_SCARD_READERSTATE_A)); copyReaderState_ServerToMyPCSC(rsArray, myRsArray, (SERVER_DWORD) dwCount); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2011-12-07 09:25:38
|
Revision: 1650 http://rdesktop.svn.sourceforge.net/rdesktop/?rev=1650&view=rev Author: hean01 Date: 2011-12-07 09:25:27 +0000 (Wed, 07 Dec 2011) Log Message: ----------- Fixes serious bug were output are aligned before all data is available. Modified Paths: -------------- rdesktop/trunk/scard.c Modified: rdesktop/trunk/scard.c =================================================================== --- rdesktop/trunk/scard.c 2011-12-07 09:20:39 UTC (rev 1649) +++ rdesktop/trunk/scard.c 2011-12-07 09:25:27 UTC (rev 1650) @@ -966,8 +966,8 @@ DEBUG_SCARD(("SCARD: -> Success (proto: 0x%08x)\n", (unsigned) dwActiveProtocol)); } + out_uint32_le(out, (SERVER_DWORD) dwActiveProtocol); outForceAlignment(out, 8); - out_uint32_le(out, (SERVER_DWORD) dwActiveProtocol); return rv; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2011-12-07 09:49:50
|
Revision: 1651 http://rdesktop.svn.sourceforge.net/rdesktop/?rev=1651&view=rev Author: hean01 Date: 2011-12-07 09:49:44 +0000 (Wed, 07 Dec 2011) Log Message: ----------- Adding forceOutAlignemnt(out, 8) which is just cosmetics. Thanks goes to Arvo for his findings and provided patch of the bugs fixed in r1649, r1650 and this commit. Revision Links: -------------- http://rdesktop.svn.sourceforge.net/rdesktop/?rev=1649&view=rev http://rdesktop.svn.sourceforge.net/rdesktop/?rev=1650&view=rev Modified Paths: -------------- rdesktop/trunk/scard.c Modified: rdesktop/trunk/scard.c =================================================================== --- rdesktop/trunk/scard.c 2011-12-07 09:25:27 UTC (rev 1650) +++ rdesktop/trunk/scard.c 2011-12-07 09:49:44 UTC (rev 1651) @@ -690,6 +690,7 @@ /* i hope it's not a pointer because i just downcasted it - jlj */ out_uint32_le(out, 0x00000004); out_uint32_le(out, hContext); + outForceAlignment(out, 8); return rv; } @@ -721,6 +722,7 @@ DEBUG_SCARD(("SCARD: -> Success\n")); } + outForceAlignment(out, 8); return rv; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <os...@us...> - 2013-07-05 14:32:47
|
Revision: 1724 http://sourceforge.net/p/rdesktop/code/1724 Author: ossman_ Date: 2013-07-05 14:32:43 +0000 (Fri, 05 Jul 2013) Log Message: ----------- Don't screw up the attribute ID for SCardGetAttr(). It worked by pure luck in some cases, and failed in the rest. Modified Paths: -------------- rdesktop/trunk/scard.c Modified: rdesktop/trunk/scard.c =================================================================== --- rdesktop/trunk/scard.c 2013-07-05 11:44:03 UTC (rev 1723) +++ rdesktop/trunk/scard.c 2013-07-05 14:32:43 UTC (rev 1724) @@ -1962,7 +1962,6 @@ in->p += 0x0C; in_uint32_le(in, hCard); myHCard = _scard_handle_list_get_pcsc_handle(hCard); - dwAttrId = dwAttrId & 0x0000FFFF; DEBUG_SCARD(("SCARD: SCardGetAttrib(hcard: 0x%08x [0x%08lx], attrib: 0x%08x (%d bytes))\n", (unsigned) hCard, (unsigned long) myHCard, @@ -1990,7 +1989,7 @@ rv = SCardGetAttrib(myHCard, (MYPCSC_DWORD) dwAttrId, pbAttr, &attrLen); dwAttrLen = attrLen; - if (dwAttrId == 0x00000100 && rv != SCARD_S_SUCCESS) + if (dwAttrId == SCARD_ATTR_VENDOR_NAME && rv != SCARD_S_SUCCESS) { DEBUG_SCARD(("SCARD: Faking attribute ATTR_VENDOR_NAME\n")); pthread_mutex_lock(&hcardAccess); @@ -2059,8 +2058,6 @@ in_uint32_le(in, hCard); myHCard = scHandleToMyPCSC(hCard); - dwAttrId = dwAttrId & 0x0000FFFF; - DEBUG_SCARD(("SCARD: SCardSetAttrib(hcard: 0x%08x [0x%08lx], attrib: 0x%08x (%d bytes))\n", (unsigned) hCard, (unsigned long) myHCard, (unsigned) dwAttrId, (int) dwAttrLen)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2013-08-12 09:52:10
|
Revision: 1729 http://sourceforge.net/p/rdesktop/code/1729 Author: hean01 Date: 2013-08-12 09:52:08 +0000 (Mon, 12 Aug 2013) Log Message: ----------- Fixes a issue with 64bit portability. Fix for bug #366 Modified Paths: -------------- rdesktop/trunk/scard.c Modified: rdesktop/trunk/scard.c =================================================================== --- rdesktop/trunk/scard.c 2013-08-10 16:16:55 UTC (rev 1728) +++ rdesktop/trunk/scard.c 2013-08-12 09:52:08 UTC (rev 1729) @@ -2,8 +2,8 @@ rdesktop: A Remote Desktop Protocol client. Smart Card support Copyright (C) Alexi Volkov <al...@my...> 2006 - Copyright 2010 Pierre Ossman <os...@ce...> for Cendio AB - Copyright 2011 Henrik Andersson <he...@ce...> for Cendio AB + Copyright 2010-2013 Pierre Ossman <os...@ce...> for Cendio AB + Copyright 2011-2013 Henrik Andersson <he...@ce...> for Cendio AB This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1109,6 +1109,7 @@ MYPCSC_SCARDCONTEXT myHContext; SERVER_DWORD dwTimeout; SERVER_DWORD dwCount; + SERVER_DWORD dwPointerId; SERVER_LPSCARD_READERSTATE_A rsArray, cur; MYPCSC_LPSCARD_READERSTATE_A myRsArray; long i; @@ -1133,7 +1134,8 @@ memset(rsArray, 0, dwCount * sizeof(SERVER_SCARD_READERSTATE_A)); for (i = 0, cur = rsArray; i < dwCount; i++, cur++) { - in_uint32_le(in, cur->szReader); + in_uint32_le(in, dwPointerId); + cur->szReader = (char *)(intptr_t)dwPointerId; in_uint32_le(in, cur->dwCurrentState); in_uint32_le(in, cur->dwEventState); in_uint32_le(in, cur->cbAtr); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2013-08-29 13:27:38
|
Revision: 1733 http://sourceforge.net/p/rdesktop/code/1733 Author: hean01 Date: 2013-08-29 13:27:35 +0000 (Thu, 29 Aug 2013) Log Message: ----------- Remove undocumented fallback codeblock which existence is not motivated. Modified Paths: -------------- rdesktop/trunk/scard.c Modified: rdesktop/trunk/scard.c =================================================================== --- rdesktop/trunk/scard.c 2013-08-14 13:49:45 UTC (rev 1732) +++ rdesktop/trunk/scard.c 2013-08-29 13:27:35 UTC (rev 1733) @@ -1991,26 +1991,6 @@ rv = SCardGetAttrib(myHCard, (MYPCSC_DWORD) dwAttrId, pbAttr, &attrLen); dwAttrLen = attrLen; - if (dwAttrId == SCARD_ATTR_VENDOR_NAME && rv != SCARD_S_SUCCESS) - { - DEBUG_SCARD(("SCARD: Faking attribute ATTR_VENDOR_NAME\n")); - pthread_mutex_lock(&hcardAccess); - PSCHCardRec hcard = hcardFirst; - while (hcard) - { - if (hcard->hCard == hCard) - { - dwAttrLen = strlen(hcard->vendor); - memcpy(pbAttr, hcard->vendor, dwAttrLen); - rv = SCARD_S_SUCCESS; - break; - } - hcard = hcard->next; - } - pthread_mutex_unlock(&hcardAccess); - DEBUG_SCARD(("[0x%.8x]\n", (unsigned int) rv)); - } - if (rv != SCARD_S_SUCCESS) { DEBUG_SCARD(("SCARD: -> Failure: %s (0x%08x)\n", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <as...@us...> - 2013-09-16 12:45:50
|
Revision: 1738 http://sourceforge.net/p/rdesktop/code/1738 Author: astrand Date: 2013-09-16 12:45:47 +0000 (Mon, 16 Sep 2013) Log Message: ----------- Ran indent-all Modified Paths: -------------- rdesktop/trunk/scard.c Modified: rdesktop/trunk/scard.c =================================================================== --- rdesktop/trunk/scard.c 2013-09-16 12:45:24 UTC (rev 1737) +++ rdesktop/trunk/scard.c 2013-09-16 12:45:47 UTC (rev 1738) @@ -1135,7 +1135,7 @@ for (i = 0, cur = rsArray; i < dwCount; i++, cur++) { in_uint32_le(in, dwPointerId); - cur->szReader = (char *)(intptr_t)dwPointerId; + cur->szReader = (char *) (intptr_t) dwPointerId; in_uint32_le(in, cur->dwCurrentState); in_uint32_le(in, cur->dwEventState); in_uint32_le(in, cur->cbAtr); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2014-09-11 11:15:51
|
Revision: 1835 http://sourceforge.net/p/rdesktop/code/1835 Author: hean01 Date: 2014-09-11 11:15:46 +0000 (Thu, 11 Sep 2014) Log Message: ----------- Workaround for bug in pcsc lite where timeout value 0 for SCardGetStatusChange() behaves just like INFINIT. Modified Paths: -------------- rdesktop/trunk/scard.c Modified: rdesktop/trunk/scard.c =================================================================== --- rdesktop/trunk/scard.c 2014-09-11 08:58:40 UTC (rev 1834) +++ rdesktop/trunk/scard.c 2014-09-11 11:15:46 UTC (rev 1835) @@ -3,7 +3,7 @@ Smart Card support Copyright (C) Alexi Volkov <al...@my...> 2006 Copyright 2010-2013 Pierre Ossman <os...@ce...> for Cendio AB - Copyright 2011-2013 Henrik Andersson <he...@ce...> for Cendio AB + Copyright 2011-2014 Henrik Andersson <he...@ce...> for Cendio AB This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1175,6 +1175,11 @@ memset(myRsArray, 0, dwCount * sizeof(SERVER_SCARD_READERSTATE_A)); copyReaderState_ServerToMyPCSC(rsArray, myRsArray, (SERVER_DWORD) dwCount); + /* Workaround for a bug in pcsclite, timeout value of 0 is handled as INFINIT + but is by Windows PCSC spec. used for polling current state. + */ + if (dwTimeout == 0) + dwTimeout = 1; rv = SCardGetStatusChange(myHContext, (MYPCSC_DWORD) dwTimeout, myRsArray, (MYPCSC_DWORD) dwCount); copyReaderState_MyPCSCToServer(myRsArray, rsArray, (MYPCSC_DWORD) dwCount); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |