From 5b1c254f2d4f630c3e455ecc9b6931f3b991348a Mon Sep 17 00:00:00 2001 From: akallabeth Date: Thu, 13 Feb 2025 11:59:06 +0100 Subject: [PATCH] [utils,smartcard] fix return checks for SCardListReaders --- libfreerdp/utils/smartcard_call.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/libfreerdp/utils/smartcard_call.c b/libfreerdp/utils/smartcard_call.c index eb3734a83..d210d5e15 100644 --- a/libfreerdp/utils/smartcard_call.c +++ b/libfreerdp/utils/smartcard_call.c @@ -346,8 +346,11 @@ static LONG smartcard_ListReadersA_Call(scard_call_context* smartcard, wStream* DWORD cchReaders = SCARD_AUTOALLOCATE; LONG status = ret.ReturnCode = wrap(smartcard, SCardListReadersA, operation->hContext, (LPCSTR)call->mszGroups, (LPSTR)&mszReaders, &cchReaders); - if (cchReaders == SCARD_AUTOALLOCATE) - return SCARD_F_UNKNOWN_ERROR; + if (status == SCARD_S_SUCCESS) + { + if (cchReaders == SCARD_AUTOALLOCATE) + status = SCARD_F_UNKNOWN_ERROR; + } if (status != SCARD_S_SUCCESS) { @@ -399,8 +402,11 @@ static LONG smartcard_ListReadersW_Call(scard_call_context* smartcard, wStream* cchReaders = SCARD_AUTOALLOCATE; status = ret.ReturnCode = wrap(smartcard, SCardListReadersW, operation->hContext, string.wz, (LPWSTR)&mszReaders.pw, &cchReaders); - if (cchReaders == SCARD_AUTOALLOCATE) - return SCARD_F_UNKNOWN_ERROR; + if (status == SCARD_S_SUCCESS) + { + if (cchReaders == SCARD_AUTOALLOCATE) + status = SCARD_F_UNKNOWN_ERROR; + } if (status != SCARD_S_SUCCESS) {