From: bjcollins Date: Wed, 2 Sep 2015 17:11:47 +0000 (-0500) Subject: Give unique aliases for smartcards with the same name, so that two readers do not... X-Git-Tag: 2.0.0-beta1+android10~416^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ac67e25007f36ecb800e50c14f8f1b43d1fc5926;p=platform%2Fupstream%2Ffreerdp.git Give unique aliases for smartcards with the same name, so that two readers do not end up with the same alias. --- diff --git a/winpr/libwinpr/smartcard/smartcard_pcsc.c b/winpr/libwinpr/smartcard/smartcard_pcsc.c index a361b82..5256828 100644 --- a/winpr/libwinpr/smartcard/smartcard_pcsc.c +++ b/winpr/libwinpr/smartcard/smartcard_pcsc.c @@ -673,6 +673,7 @@ char* PCSC_ConvertReaderNameToWinSCard(const char* name) char* p, *q; char* tokens[64][2]; char* nameWinSCard; + char *checkAliasName; /** * pcsc-lite reader name format: * name [interface] (serial) index slot @@ -796,10 +797,20 @@ char* PCSC_ConvertReaderNameToWinSCard(const char* name) /** * pcsc-lite appears to use an index number based on all readers, * while WinSCard uses an index number based on readers of the same name. - * Force an index number of 0 for now, fix later. + * Set index for this reader by checking if index is already used by another reader + * and incrementing until available index found. */ index = 0; sprintf_s(nameWinSCard, size, "%.*s %d", length, p, index); + + checkAliasName = PCSC_GetReaderNameFromAlias(nameWinSCard); + while ((checkAliasName != NULL) && (strcmp(checkAliasName, name) != 0)) + { + index++; + sprintf_s(nameWinSCard, size, "%.*s %d", length, p, index); + checkAliasName = PCSC_GetReaderNameFromAlias(nameWinSCard); + } + return nameWinSCard; }