From 30e05bdaf4096decf4ce0b1c448cd03c6786323b Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Wed, 25 Mar 2026 09:04:43 +0100 Subject: [PATCH] [core,gateway] Check rpcconn_common_hdr_t::auth_length is valid Do sanity checks for rpcconn_common_hdr_t::auth_length read from network, abort if the value is out of range. (cherry picked from commit 4ac0b6467d371a1ad47c1f751c5b305e4c068adb) CVE: CVE-2026-33952 Upstream-Status: Backport [https://github.com/FreeRDP/FreeRDP/commit/4ac0b6467d371a1ad47c1f751c5b305e4c068adb] Signed-off-by: Ankur Tyagi --- libfreerdp/core/gateway/rts.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libfreerdp/core/gateway/rts.c b/libfreerdp/core/gateway/rts.c index 2ba757815..9702582da 100644 --- a/libfreerdp/core/gateway/rts.c +++ b/libfreerdp/core/gateway/rts.c @@ -253,6 +253,15 @@ BOOL rts_read_common_pdu_header(wStream* s, rpcconn_common_hdr_t* header, BOOL i header->frag_length, sizeof(rpcconn_common_hdr_t)); return FALSE; } + if (header->auth_length > header->frag_length - 8ull) + { + if (!ignoreErrors) + WLog_WARN(TAG, + "Invalid header->auth_length(%" PRIu16 ") > header->frag_length(%" PRIu16 + ") - 8ull", + header->frag_length, header->auth_length); + return FALSE; + } if (!ignoreErrors) {