From 7b860ce96abf313b64e5b59f10534557456a2560 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Wed, 17 Oct 2018 12:15:57 +0200 Subject: [PATCH] Add command line option /relax-order-checks --- client/common/cmdline.c | 4 ++++ client/common/cmdline.h | 1 + libfreerdp/core/orders.c | 18 ++++++++++++------ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/client/common/cmdline.c b/client/common/cmdline.c index 45c1681ca..7a6a21d7b 100644 --- a/client/common/cmdline.c +++ b/client/common/cmdline.c @@ -1744,6 +1744,10 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, { settings->ConsoleSession = TRUE; } + CommandLineSwitchCase(arg, "relax-order-checks") + { + settings->AllowUnanouncedOrdersFromServer = arg->Value; + } CommandLineSwitchCase(arg, "restricted-admin") { settings->ConsoleSession = TRUE; diff --git a/client/common/cmdline.h b/client/common/cmdline.h index 6072d5051..e2f700c77 100644 --- a/client/common/cmdline.h +++ b/client/common/cmdline.h @@ -142,6 +142,7 @@ static COMMAND_LINE_ARGUMENT_A args[] = { "pwidth", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, "Physical width of display (in millimeters)" }, { "reconnect-cookie", COMMAND_LINE_VALUE_REQUIRED, "", NULL, NULL, -1, NULL, "Pass base64 reconnect cookie to the connection" }, { "redirect-prefer", COMMAND_LINE_VALUE_REQUIRED, "[,[,]]", NULL, NULL, -1, NULL, "Override the preferred redirection order" }, + { "relax-order-checks", COMMAND_LINE_VALUE_FLAG, NULL, NULL, NULL, -1, "relax-order-checks", "Do not check if a RDP order was announced during capability exchange, only use when connecting to a buggy server" }, { "restricted-admin", COMMAND_LINE_VALUE_FLAG, NULL, NULL, NULL, -1, "restrictedAdmin", "Restricted admin mode" }, { "rfx", COMMAND_LINE_VALUE_FLAG, NULL, NULL, NULL, -1, NULL, "RemoteFX" }, { "rfx-mode", COMMAND_LINE_VALUE_REQUIRED, "image|video", NULL, NULL, -1, NULL, "RemoteFX mode" }, diff --git a/libfreerdp/core/orders.c b/libfreerdp/core/orders.c index b2c48685f..56a67ce8d 100644 --- a/libfreerdp/core/orders.c +++ b/libfreerdp/core/orders.c @@ -121,13 +121,19 @@ static int check_order_activated(wLog* log, rdpSettings* settings, const char* o { if (!condition) { - WLog_Print(log, WLOG_ERROR, - "%s - SERVER BUG: The support for this feature was not announced!", orderName); - - if (!settings->AllowUnanouncedOrdersFromServer) + if (settings->AllowUnanouncedOrdersFromServer) + { + WLog_Print(log, WLOG_WARN, + "%s - SERVER BUG: The support for this feature was not announced!", orderName); + return 0; + } + else + { + WLog_Print(log, WLOG_ERROR, + "%s - SERVER BUG: The support for this feature was not announced! Use /relax-order-checks to ignore", + orderName); return -1; - - return 0; + } } return 1;