diff --git a/SOURCES/fix-channels-smartcard-fix-StatusW_Call.patch b/SOURCES/fix-channels-smartcard-fix-StatusW_Call.patch new file mode 100644 index 0000000..3c67a61 --- /dev/null +++ b/SOURCES/fix-channels-smartcard-fix-StatusW_Call.patch @@ -0,0 +1,51 @@ +From a311075202865d22b87ec2ea8d1e32fa11868012 Mon Sep 17 00:00:00 2001 +From: Bernhard Miklautz +Date: Wed, 10 Jul 2019 18:36:34 +0200 +Subject: [PATCH] fix [channels/smartcard]: fix StatusW_Call + +According to 2.2.2.18 Status_Call cbAtrLen is unused an must be ignored +upon receipt. +--- + channels/smartcard/client/smartcard_operations.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +diff --git a/channels/smartcard/client/smartcard_operations.c b/channels/smartcard/client/smartcard_operations.c +index c4bf65d38..e3d848171 100644 +--- a/channels/smartcard/client/smartcard_operations.c ++++ b/channels/smartcard/client/smartcard_operations.c +@@ -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); +-- +2.26.0 + diff --git a/SPECS/freerdp.spec b/SPECS/freerdp.spec index ef091b9..3919392 100644 --- a/SPECS/freerdp.spec +++ b/SPECS/freerdp.spec @@ -18,7 +18,7 @@ Name: freerdp Version: 2.0.0 -Release: 1.rc4%{?dist} +Release: 2.rc4%{?dist} Summary: Free implementation of the Remote Desktop Protocol (RDP) License: ASL 2.0 URL: http://www.freerdp.com/ @@ -26,6 +26,8 @@ URL: http://www.freerdp.com/ Source0: https://github.com/FreeRDP/FreeRDP/archive/%{gittag}/FreeRDP-%{gittag}.tar.gz Source1: build-config.h +Patch01: fix-channels-smartcard-fix-StatusW_Call.patch + BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: alsa-lib-devel @@ -295,6 +297,9 @@ install -m 644 %{SOURCE1} $RPM_BUILD_ROOT/%{_includedir}/freerdp2/freerdp/ %{_libdir}/pkgconfig/winpr-tools2.pc %changelog +* Mon Mar 30 2020 Ondrej Holy - 2.0.0-2.rc4 +- Fix SCARD_INSUFFICIENT_BUFFER error (#1765199) + * Wed Feb 20 2019 Ondrej Holy - 2.0.0-1.rc4 - Update to 2.0.0-rc4 (#1291254)