[utils,smartcard] fix possible assertion

This commit is contained in:
akallabeth
2025-06-10 14:07:04 +02:00
parent 7df774dac5
commit d690ea0cb2
2 changed files with 10 additions and 6 deletions

View File

@@ -1881,7 +1881,7 @@ BOOL gcc_read_client_network_data(wStream* s, rdpMcs* mcs)
Stream_Read_UINT32(s, mcs->channelCount); /* channelCount */
if (!Stream_CheckAndLogRequiredLengthWLog(mcs->log, s, mcs->channelCount * 12))
if (!Stream_CheckAndLogRequiredLengthOfSizeWLog(mcs->log, s, mcs->channelCount, 12ull))
return FALSE;
if (mcs->channelCount > CHANNEL_MAX_COUNT)

View File

@@ -1319,6 +1319,7 @@ static LONG smartcard_StatusW_Call(scard_call_context* smartcard, wStream* out,
if ((ret.ReturnCode == SCARD_S_SUCCESS) && (ret.cBytes == SCARD_AUTOALLOCATE))
return SCARD_F_UNKNOWN_ERROR;
size_t blen = 0;
if (status == SCARD_S_SUCCESS)
{
if (!call->fmszReaderNamesIsNULL)
@@ -1327,11 +1328,14 @@ static LONG smartcard_StatusW_Call(scard_call_context* smartcard, wStream* out,
ret.cbAtrLen = cbAtrLen;
}
/* SCardStatusW returns number of characters, we need number of bytes */
WINPR_ASSERT(ret.cBytes < SCARD_AUTOALLOCATE / sizeof(WCHAR));
const size_t blen = sizeof(WCHAR) * ret.cBytes;
WINPR_ASSERT(blen <= UINT32_MAX);
ret.cBytes = (UINT32)blen;
if (ret.cBytes != SCARD_AUTOALLOCATE)
{
/* SCardStatusW returns number of characters, we need number of bytes */
WINPR_ASSERT(ret.cBytes < SCARD_AUTOALLOCATE / sizeof(WCHAR));
blen = sizeof(WCHAR) * ret.cBytes;
WINPR_ASSERT(blen <= UINT32_MAX);
ret.cBytes = (UINT32)blen;
}
status = smartcard_pack_status_return(out, &ret, TRUE);
if (status != SCARD_S_SUCCESS)