diff --git a/debian/patches/2002_revert-e4b30a5cb6100a8ea4f320b829c9c5712ed4a783.patch b/debian/patches/2002_revert-e4b30a5cb6100a8ea4f320b829c9c5712ed4a783.patch deleted file mode 100644 index 0438054..0000000 --- a/debian/patches/2002_revert-e4b30a5cb6100a8ea4f320b829c9c5712ed4a783.patch +++ /dev/null @@ -1,166 +0,0 @@ -Description: This is a revert of upstream commit e4b30a5cb6100a8ea4f320b829c9c5712ed4a783 (breaking ABI compatibility with FreeRDP 2.2.0) -Author: Mike Gabriel - -#diff --git a/client/Mac/cli/AppDelegate.m b/client/Mac/cli/AppDelegate.m -#index b7abcde70..698695676 100644 -#--- a/client/Mac/cli/AppDelegate.m -#+++ b/client/Mac/cli/AppDelegate.m -#@@ -199,7 +199,6 @@ void mac_set_view_size(rdpContext *context, MRDPView *view); -# -# void AppDelegate_ConnectionResultEventHandler(void *ctx, ConnectionResultEventArgs *e) -# { -#- rdpContext *context = (rdpContext *)ctx; -# NSLog(@"ConnectionResult event result:%d\n", e->result); -# -# if (_singleDelegate) -#@@ -207,15 +206,11 @@ void AppDelegate_ConnectionResultEventHandler(void *ctx, ConnectionResultEventAr -# if (e->result != 0) -# { -# NSString *message = nil; -#- DWORD code = freerdp_get_last_error(context); -#- switch (code) -#+ -#+ if (connectErrorCode == AUTHENTICATIONERROR) -# { -#- case FREERDP_ERROR_AUTHENTICATION_FAILED: -#- message = [NSString -#- stringWithFormat:@"%@", @"Authentication failure, check credentials."]; -#- break; -#- default: -#- break; -#+ message = [NSString -#+ stringWithFormat:@"%@", @"Authentication failure, check credentials."]; -# } -# -# // Making sure this should be invoked on the main UI thread. -diff --git a/include/freerdp/error.h b/include/freerdp/error.h -index 0fb51608b..f9d4b6ab0 100644 ---- a/include/freerdp/error.h -+++ b/include/freerdp/error.h -@@ -177,6 +177,30 @@ extern "C" - FREERDP_API const char* freerdp_get_error_info_name(UINT32 code); - FREERDP_API const char* freerdp_get_error_info_category(UINT32 code); - -+ /** -+ * This static variable holds an error code if the return value from connect is FALSE. -+ * This variable is always set to 0 in the beginning of the connect sequence. -+ * The returned code can be used to inform the user of the detailed connect error. -+ * The value can hold one of the defined error codes below OR an error according to errno -+ */ -+ -+ FREERDP_API extern int connectErrorCode; -+ -+#define ERRORSTART 10000 -+#define PREECONNECTERROR ERRORSTART + 1 -+#define UNDEFINEDCONNECTERROR ERRORSTART + 2 -+#define POSTCONNECTERROR ERRORSTART + 3 -+#define DNSERROR ERRORSTART + 4 /* general DNS ERROR */ -+#define DNSNAMENOTFOUND ERRORSTART + 5 /* EAI_NONAME */ -+#define CONNECTERROR \ -+ ERRORSTART + 6 /* a connect error if errno is not define during tcp connect \ -+ */ -+#define MCSCONNECTINITIALERROR ERRORSTART + 7 -+#define TLSCONNECTERROR ERRORSTART + 8 -+#define AUTHENTICATIONERROR ERRORSTART + 9 -+#define INSUFFICIENTPRIVILEGESERROR ERRORSTART + 10 -+#define CANCELEDBYUSER ERRORSTART + 11 -+ - /** - * FreeRDP Context Error Codes - */ -diff --git a/libfreerdp/core/errinfo.c b/libfreerdp/core/errinfo.c -index abfe96efd..e635847dc 100644 ---- a/libfreerdp/core/errinfo.c -+++ b/libfreerdp/core/errinfo.c -@@ -34,6 +34,8 @@ - ERRINFO_##_code, "ERRINFO_" #_code, ERRINFO_##_code##_STRING, category \ - } - -+int connectErrorCode; -+ - /* Protocol-independent codes */ - - #define ERRINFO_RPC_INITIATED_DISCONNECT_STRING \ -diff --git a/libfreerdp/core/freerdp.c b/libfreerdp/core/freerdp.c -index 81183e76d..9094bc346 100644 ---- a/libfreerdp/core/freerdp.c -+++ b/libfreerdp/core/freerdp.c -@@ -55,6 +55,8 @@ - - #define TAG FREERDP_TAG("core") - -+/* connectErrorCode is 'extern' in error.h. See comment there.*/ -+ - UINT freerdp_channel_add_init_handle_data(rdpChannelHandles* handles, void* pInitHandle, - void* pUserData) - { -@@ -161,6 +163,7 @@ BOOL freerdp_connect(freerdp* instance) - - /* We always set the return code to 0 before we start the connect sequence*/ - instance->ConnectionCallbackState = CLIENT_STATE_INITIAL; -+ connectErrorCode = 0; - freerdp_set_last_error_log(instance->context, FREERDP_ERROR_SUCCESS); - clearChannelError(instance->context); - ResetEvent(instance->context->abortEvent); -@@ -890,6 +893,61 @@ void freerdp_set_last_error_ex(rdpContext* context, UINT32 lastError, const char - } - - context->LastError = lastError; -+ -+ switch (lastError) -+ { -+ case FREERDP_ERROR_PRE_CONNECT_FAILED: -+ connectErrorCode = PREECONNECTERROR; -+ break; -+ -+ case FREERDP_ERROR_CONNECT_UNDEFINED: -+ connectErrorCode = UNDEFINEDCONNECTERROR; -+ break; -+ -+ case FREERDP_ERROR_POST_CONNECT_FAILED: -+ connectErrorCode = POSTCONNECTERROR; -+ break; -+ -+ case FREERDP_ERROR_DNS_ERROR: -+ connectErrorCode = DNSERROR; -+ break; -+ -+ case FREERDP_ERROR_DNS_NAME_NOT_FOUND: -+ connectErrorCode = DNSNAMENOTFOUND; -+ break; -+ -+ case FREERDP_ERROR_CONNECT_FAILED: -+ connectErrorCode = CONNECTERROR; -+ break; -+ -+ case FREERDP_ERROR_MCS_CONNECT_INITIAL_ERROR: -+ connectErrorCode = MCSCONNECTINITIALERROR; -+ break; -+ -+ case FREERDP_ERROR_TLS_CONNECT_FAILED: -+ connectErrorCode = TLSCONNECTERROR; -+ break; -+ -+ case FREERDP_ERROR_AUTHENTICATION_FAILED: -+ connectErrorCode = AUTHENTICATIONERROR; -+ break; -+ -+ case FREERDP_ERROR_INSUFFICIENT_PRIVILEGES: -+ connectErrorCode = INSUFFICIENTPRIVILEGESERROR; -+ break; -+ -+ case FREERDP_ERROR_CONNECT_CANCELLED: -+ connectErrorCode = CANCELEDBYUSER; -+ break; -+ -+ case FREERDP_ERROR_SECURITY_NEGO_CONNECT_FAILED: -+ connectErrorCode = CONNECTERROR; -+ break; -+ -+ case FREERDP_ERROR_CONNECT_TRANSPORT_FAILED: -+ connectErrorCode = CONNECTERROR; -+ break; -+ } - } - - const char* freerdp_get_logon_error_info_type(UINT32 type) diff --git a/debian/patches/series b/debian/patches/series index cb8bfe6..eb95fab 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,2 +1,22 @@ 2001-fake-git-revision.patch -2002_revert-e4b30a5cb6100a8ea4f320b829c9c5712ed4a783.patch +0001-Added-compatibility-define.patch +0003-Reverted-connectErrorCode-removal.patch +0004-Fixed-a-leak-on-mouse-cursor-updates.patch +0007-Fixed-format-string-in-smartcard_trace_state_return.patch +0008-Fixed-linking-dependencies-for-client-geometry-chann.patch +0010-Fixed-smartcard_convert_string_list-with-0-length.patch +0012-Parse-on-a-copy-of-the-argument-string-for-printer.patch +0015-Fix-xf_Pointer_SetPosition-with-smart-sizing.patch +0017-Backported-6865-Disable-websockets-command-line-opti.patch +0019-Check-smartcard_convert_string_list-for-NULL-string.patch +0020-Use-specific-names-for-drive-hotplug-special-values.patch +0021-Filter-RDPDR-types-other-than-drives-on-windows-hotp.patch +0023-use-tlsOut-BIO-when-using-websocket-in-rdg_bio_ctrl.patch +0024-Added-bounds-checks-to-gfx-commands.patch +0025-Added-bounds-check-in-rdpgfx_recv_wire_to_surface_1_.patch +0026-Added-fuzzying-test-for-planar-decoder.patch +0027-Added-missing-bounds-check.patch +0028-Fixed-mac-issues-with-smartcard-context-cleanup-6890.patch +0031-Fix-monitor-list.patch +0032-Fixed-CodeQL-warnings.patch +0033-Reverted-winpr_BinToHexString-argument-change.patch