fix [channels/smartcard]: fix StatusW_Call

According to 2.2.2.18 Status_Call cbAtrLen is unused an must be ignored
upon receipt.
This commit is contained in:
Bernhard Miklautz 2019-07-10 18:36:34 +02:00 committed by akallabeth
parent 3c18555693
commit a311075202

View File

@ -1209,15 +1209,19 @@ static LONG smartcard_StatusW_Call(SMARTCARD_DEVICE* smartcard, SMARTCARD_OPERAT
Status_Call* call = operation->call;
DWORD cbAtrLen;
if (call->cbAtrLen > 32)
call->cbAtrLen = 32;
/**
* [MS-RDPESC]
* According to 2.2.2.18 Status_Call cbAtrLen is unused an must be ignored upon receipt.
*/
cbAtrLen = call->cbAtrLen = 32;
call->cchReaderLen;
if (call->fmszReaderNamesIsNULL)
cchReaderLen = 0;
else
cchReaderLen = SCARD_AUTOALLOCATE;
cbAtrLen = call->cbAtrLen;
ZeroMemory(ret.pbAtr, 32);
status = ret.ReturnCode = SCardStatusW(operation->hCard,
call->fmszReaderNamesIsNULL ? NULL : (LPWSTR) &mszReaderNames,
@ -1236,8 +1240,7 @@ static LONG smartcard_StatusW_Call(SMARTCARD_DEVICE* smartcard, SMARTCARD_OPERAT
ret.cBytes = cchReaderLen;
#endif
if (call->cbAtrLen)
ret.cbAtrLen = cbAtrLen;
ret.cbAtrLen = cbAtrLen;
}
smartcard_trace_status_return(smartcard, &ret, TRUE);