Fix inconsistent cBytes value between WinScard and pcsc-lite.
authorRuben De Visscher <ruben@rubendv.be>
Tue, 24 Apr 2018 08:33:44 +0000 (10:33 +0200)
committerRuben De Visscher <ruben@rubendv.be>
Tue, 24 Apr 2018 08:33:44 +0000 (10:33 +0200)
channels/smartcard/client/smartcard_operations.c

index 80dd4d0..ec979e6 100644 (file)
@@ -1142,7 +1142,13 @@ static LONG smartcard_StatusW_Call(SMARTCARD_DEVICE* smartcard, SMARTCARD_OPERAT
                if (!call->fmszReaderNamesIsNULL)
                        ret.mszReaderNames = (BYTE*) mszReaderNames;
 
+               // WinScard returns the number of CHARACTERS whereas pcsc-lite returns the
+               // number of BYTES.
+#ifdef _WIN32
+               ret.cBytes = cchReaderLen * 2;
+#else
                ret.cBytes = cchReaderLen;
+#endif
 
                if (call->cbAtrLen)
                        ret.cbAtrLen = cbAtrLen;