From 23b2c3bfae2b31078473b91c8510ea0c598e0d15 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Wed, 24 Sep 2025 10:54:31 +0200 Subject: [PATCH] [core,nego] print unknown nego flag values in nego_rdp_neg_rsp_flags_str print the unknown values --- libfreerdp/core/nego.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/libfreerdp/core/nego.c b/libfreerdp/core/nego.c index 24a8fea32..08eba6803 100644 --- a/libfreerdp/core/nego.c +++ b/libfreerdp/core/nego.c @@ -1321,6 +1321,9 @@ BOOL nego_process_negotiation_request(rdpNego* nego, wStream* s) static const char* nego_rdp_neg_rsp_flags_str(UINT32 flags) { + const uint32_t mask = + (EXTENDED_CLIENT_DATA_SUPPORTED | DYNVC_GFX_PROTOCOL_SUPPORTED | RDP_NEGRSP_RESERVED | + RESTRICTED_ADMIN_MODE_SUPPORTED | REDIRECTED_AUTHENTICATION_MODE_SUPPORTED); static char buffer[1024] = { 0 }; (void)_snprintf(buffer, ARRAYSIZE(buffer), "[0x%02" PRIx32 "] ", flags); @@ -1334,10 +1337,12 @@ static const char* nego_rdp_neg_rsp_flags_str(UINT32 flags) winpr_str_append("RESTRICTED_ADMIN_MODE_SUPPORTED", buffer, sizeof(buffer), "|"); if (flags & REDIRECTED_AUTHENTICATION_MODE_SUPPORTED) winpr_str_append("REDIRECTED_AUTHENTICATION_MODE_SUPPORTED", buffer, sizeof(buffer), "|"); - if ((flags & (uint32_t)~(EXTENDED_CLIENT_DATA_SUPPORTED | DYNVC_GFX_PROTOCOL_SUPPORTED | - RDP_NEGRSP_RESERVED | RESTRICTED_ADMIN_MODE_SUPPORTED | - REDIRECTED_AUTHENTICATION_MODE_SUPPORTED))) - winpr_str_append("UNKNOWN", buffer, sizeof(buffer), "|"); + if (flags & ~mask) + { + char buffer2[32] = { 0 }; + (void)_snprintf(buffer2, sizeof(buffer2), "UNKNOWN[0x%04" PRIx32 "]", flags & ~mask); + winpr_str_append(buffer2, buffer, sizeof(buffer), "|"); + } return buffer; }