Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/FreeRDP-Ubuntu-PPA.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntenore Gatta <antenore@simbiosi.org>2021-10-15 17:07:56 +0300
committerAntenore Gatta <antenore@simbiosi.org>2021-10-15 17:07:56 +0300
commitd4f130f9c60c99e3c8c9c7dc02e919d9dfc040c6 (patch)
tree1dfd70cbdce4518034c4dd076e96ca50cecfed29
parent8b91512d8dd319dfae0a656895adf559103161b6 (diff)
Removing Debian patches
-rw-r--r--debian/patches/0001-Added-compatibility-define.patch24
-rw-r--r--debian/patches/0001-Fix-seeking-in-Cache-Brush-and-other-Secondary-Drawi.patch56
-rw-r--r--debian/patches/0003-Fixed-6298-Mask-CACHED_BRUSH-when-checking-brush-sty.patch28
-rw-r--r--debian/patches/0003-Reverted-connectErrorCode-removal.patch149
-rw-r--r--debian/patches/0004-Fixed-a-leak-on-mouse-cursor-updates.patch37
-rw-r--r--debian/patches/0007-Fixed-format-string-in-smartcard_trace_state_return.patch46
-rw-r--r--debian/patches/0008-Fixed-linking-dependencies-for-client-geometry-chann.patch30
-rw-r--r--debian/patches/0010-Fixed-smartcard_convert_string_list-with-0-length.patch45
-rw-r--r--debian/patches/0012-Parse-on-a-copy-of-the-argument-string-for-printer.patch49
-rw-r--r--debian/patches/0015-Fix-xf_Pointer_SetPosition-with-smart-sizing.patch99
-rw-r--r--debian/patches/0017-Backported-6865-Disable-websockets-command-line-opti.patch145
-rw-r--r--debian/patches/0019-Check-smartcard_convert_string_list-for-NULL-string.patch31
-rw-r--r--debian/patches/0020-Use-specific-names-for-drive-hotplug-special-values.patch57
-rw-r--r--debian/patches/0021-Filter-RDPDR-types-other-than-drives-on-windows-hotp.patch36
-rw-r--r--debian/patches/0023-use-tlsOut-BIO-when-using-websocket-in-rdg_bio_ctrl.patch57
-rw-r--r--debian/patches/0024-Added-bounds-checks-to-gfx-commands.patch85
-rw-r--r--debian/patches/0025-Added-bounds-check-in-rdpgfx_recv_wire_to_surface_1_.patch37
-rw-r--r--debian/patches/0026-Added-fuzzying-test-for-planar-decoder.patch153
-rw-r--r--debian/patches/0027-Added-missing-bounds-check.patch96
-rw-r--r--debian/patches/0028-Fixed-mac-issues-with-smartcard-context-cleanup-6890.patch63
-rw-r--r--debian/patches/0031-Fix-monitor-list.patch29
-rw-r--r--debian/patches/0032-Fixed-CodeQL-warnings.patch680
-rw-r--r--debian/patches/0033-Reverted-winpr_BinToHexString-argument-change.patch40
-rw-r--r--debian/patches/0034-Fixed-6938-Remote-app-mode-clipboard-fix.patch32
-rw-r--r--debian/patches/0035-Fixed-6989-Use-X509_STORE_set_default_paths.patch28
-rw-r--r--debian/patches/2001-fake-git-revision.patch32
-rw-r--r--debian/patches/series24
27 files changed, 0 insertions, 2188 deletions
diff --git a/debian/patches/0001-Added-compatibility-define.patch b/debian/patches/0001-Added-compatibility-define.patch
deleted file mode 100644
index bd59eb7..0000000
--- a/debian/patches/0001-Added-compatibility-define.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 1ff1906545bacb3eb7608155984dd4642647b736 Mon Sep 17 00:00:00 2001
-From: akallabeth <akallabeth@posteo.net>
-Date: Sat, 27 Feb 2021 08:29:46 +0100
-Subject: [PATCH 01/36] Added compatibility define
-
----
- winpr/include/winpr/shell.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/winpr/include/winpr/shell.h b/winpr/include/winpr/shell.h
-index 72931a01b..f88291e43 100644
---- a/winpr/include/winpr/shell.h
-+++ b/winpr/include/winpr/shell.h
-@@ -86,6 +86,7 @@ typedef enum
-
- /* Deprecated, here for compatibility */
- #define FD_SHOWPROGRESSUI FD_PROGRESSUI
-+#define FD_WRITESTIME FD_WRITETIME
-
- /* FILEDESCRIPTOR.dwFileAttributes */
- #define FILE_ATTRIBUTE_READONLY 0x00000001
---
-2.30.2
-
diff --git a/debian/patches/0001-Fix-seeking-in-Cache-Brush-and-other-Secondary-Drawi.patch b/debian/patches/0001-Fix-seeking-in-Cache-Brush-and-other-Secondary-Drawi.patch
deleted file mode 100644
index d443728..0000000
--- a/debian/patches/0001-Fix-seeking-in-Cache-Brush-and-other-Secondary-Drawi.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 8fad44609adae228000e55effae4a05fce1607d9 Mon Sep 17 00:00:00 2001
-From: Giovanni Panozzo <giovanni@panozzo.it>
-Date: Wed, 15 Jul 2020 00:08:15 +0200
-Subject: [PATCH 1/2] Fix seeking in Cache Brush and other Secondary Drawing
- Orders
-
----
- libfreerdp/core/orders.c | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/libfreerdp/core/orders.c b/libfreerdp/core/orders.c
-index dc4e51a87..723680322 100644
---- a/libfreerdp/core/orders.c
-+++ b/libfreerdp/core/orders.c
-@@ -2611,7 +2611,7 @@ static BOOL update_decompress_brush(wStream* s, BYTE* output, size_t outSize, BY
- const BYTE* palette = Stream_Pointer(s) + 16;
- const INT32 bytesPerPixel = ((bpp + 1) / 8);
-
-- if (!Stream_SafeSeek(s, 16ULL + 7ULL * bytesPerPixel)) // 64 / 4
-+ if (Stream_GetRemainingLength(s) < 16 + bytesPerPixel * 4)
- return FALSE;
-
- for (y = 7; y >= 0; y--)
-@@ -3605,7 +3605,7 @@ static BOOL update_recv_primary_order(rdpUpdate* update, wStream* s, BYTE flags)
- static BOOL update_recv_secondary_order(rdpUpdate* update, wStream* s, BYTE flags)
- {
- BOOL rc = FALSE;
-- size_t start, end, diff;
-+ size_t start, end, pos, diff;
- BYTE orderType;
- UINT16 extraFlags;
- UINT16 orderLength;
-@@ -3754,15 +3754,15 @@ static BOOL update_recv_secondary_order(rdpUpdate* update, wStream* s, BYTE flag
- WLog_Print(update->log, WLOG_ERROR, "SECONDARY ORDER %s failed", name);
- }
-
-- start += orderLength + 7;
-- end = Stream_GetPosition(s);
-- if (start > end)
-+ end = start + orderLength + 7;
-+ pos = Stream_GetPosition(s);
-+ if (pos > end)
- {
- WLog_Print(update->log, WLOG_WARN, "SECONDARY_ORDER %s: read %" PRIuz "bytes too much",
-- name, end - start);
-+ name, pos - end);
- return FALSE;
- }
-- diff = end - start;
-+ diff = end - pos;
- if (diff > 0)
- {
- WLog_Print(update->log, WLOG_DEBUG,
---
-2.25.4
-
diff --git a/debian/patches/0003-Fixed-6298-Mask-CACHED_BRUSH-when-checking-brush-sty.patch b/debian/patches/0003-Fixed-6298-Mask-CACHED_BRUSH-when-checking-brush-sty.patch
deleted file mode 100644
index b56c3af..0000000
--- a/debian/patches/0003-Fixed-6298-Mask-CACHED_BRUSH-when-checking-brush-sty.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 62530e2d9dab999d1c5ddd1368d67c599dccd580 Mon Sep 17 00:00:00 2001
-From: Armin Novak <armin.novak@thincast.com>
-Date: Tue, 23 Jun 2020 09:24:35 +0200
-Subject: [PATCH 03/34] Fixed #6298: Mask CACHED_BRUSH when checking brush
- style
-
-(cherry picked from commit ce1a9d8d1969ecbb4d24b9f4812654638a44abc2)
----
- libfreerdp/core/orders.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/libfreerdp/core/orders.c b/libfreerdp/core/orders.c
-index dc4e51a87..537e69426 100644
---- a/libfreerdp/core/orders.c
-+++ b/libfreerdp/core/orders.c
-@@ -139,7 +139,8 @@ static BYTE get_bmf_bpp(UINT32 bmf, BOOL* pValid)
- {
- if (pValid)
- *pValid = TRUE;
-- switch (bmf)
-+ /* Mask out highest bit */
-+ switch (bmf & (~CACHED_BRUSH))
- {
- case 1:
- return 1;
---
-2.25.4
-
diff --git a/debian/patches/0003-Reverted-connectErrorCode-removal.patch b/debian/patches/0003-Reverted-connectErrorCode-removal.patch
deleted file mode 100644
index dc85d31..0000000
--- a/debian/patches/0003-Reverted-connectErrorCode-removal.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-From 73753f8af40de20703858fff37a762b7f5580bb0 Mon Sep 17 00:00:00 2001
-From: akallabeth <akallabeth@posteo.net>
-Date: Sat, 27 Feb 2021 08:35:33 +0100
-Subject: [PATCH 03/36] Reverted connectErrorCode removal
-
-Reverted changes from e4b30a5cb6100a8ea4f320b829c9c5712ed4a783
-removing the symbol/define, keep the changes for the clients.
-Mark as deprecated
----
- include/freerdp/error.h | 25 +++++++++++++++++
- libfreerdp/core/errinfo.c | 2 ++
- libfreerdp/core/freerdp.c | 58 +++++++++++++++++++++++++++++++++++++++
- 3 files changed, 85 insertions(+)
-
-diff --git a/include/freerdp/error.h b/include/freerdp/error.h
-index 0fb51608b..a928a645a 100644
---- a/include/freerdp/error.h
-+++ b/include/freerdp/error.h
-@@ -177,6 +177,31 @@ extern "C"
- FREERDP_API const char* freerdp_get_error_info_name(UINT32 code);
- FREERDP_API const char* freerdp_get_error_info_category(UINT32 code);
-
-+ /**
-+ * DEPRECATED!
-+ * 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)
---
-2.30.2
-
diff --git a/debian/patches/0004-Fixed-a-leak-on-mouse-cursor-updates.patch b/debian/patches/0004-Fixed-a-leak-on-mouse-cursor-updates.patch
deleted file mode 100644
index 6e6034e..0000000
--- a/debian/patches/0004-Fixed-a-leak-on-mouse-cursor-updates.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From d88480fc48d9599a8d46e255e13ed9dbb89defde Mon Sep 17 00:00:00 2001
-From: akallabeth <akallabeth@posteo.net>
-Date: Sat, 27 Feb 2021 17:37:35 +0100
-Subject: [PATCH 04/36] Fixed a leak on mouse cursor updates
-
----
- client/X11/xf_graphics.c | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/client/X11/xf_graphics.c b/client/X11/xf_graphics.c
-index 20d54f50c..54a4b9cc7 100644
---- a/client/X11/xf_graphics.c
-+++ b/client/X11/xf_graphics.c
-@@ -305,14 +305,14 @@ static BOOL _xf_Pointer_GetCursorForCurrentScale(rdpContext* context, const rdpP
- ci.yhot = pointer->yPos * yscale;
- size = ci.height * ci.width * GetBytesPerPixel(CursorFormat);
-
-- if (!(ci.pixels = (XcursorPixel*)_aligned_malloc(size, 16)))
-- {
-- xf_unlock_x11(xfc);
-- return FALSE;
-- }
--
- if (xscale != 1 || yscale != 1)
- {
-+ if (!(ci.pixels = (XcursorPixel*)_aligned_malloc(size, 16)))
-+ {
-+ xf_unlock_x11(xfc);
-+ return FALSE;
-+ }
-+
- if (!freerdp_image_scale((BYTE*)ci.pixels, CursorFormat, 0, 0, 0, ci.width, ci.height,
- (BYTE*)xpointer->cursorPixels, CursorFormat, 0, 0, 0,
- pointer->width, pointer->height))
---
-2.30.2
-
diff --git a/debian/patches/0007-Fixed-format-string-in-smartcard_trace_state_return.patch b/debian/patches/0007-Fixed-format-string-in-smartcard_trace_state_return.patch
deleted file mode 100644
index 9a32f81..0000000
--- a/debian/patches/0007-Fixed-format-string-in-smartcard_trace_state_return.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 69ff618ebc142b53062115fab1547eb5ff2c25d7 Mon Sep 17 00:00:00 2001
-From: akallabeth <akallabeth@posteo.net>
-Date: Tue, 2 Mar 2021 07:50:17 +0100
-Subject: [PATCH 07/36] Fixed format string in smartcard_trace_state_return
-
-(cherry picked from commit ca96c4450707d39dbd5c94f2b1c4ae807789b012)
----
- channels/smartcard/client/smartcard_pack.c | 11 +++++++----
- 1 file changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/channels/smartcard/client/smartcard_pack.c b/channels/smartcard/client/smartcard_pack.c
-index f5987d4b5..ed0301bb2 100644
---- a/channels/smartcard/client/smartcard_pack.c
-+++ b/channels/smartcard/client/smartcard_pack.c
-@@ -1307,21 +1307,24 @@ static void smartcard_trace_status_return(SMARTCARD_DEVICE* smartcard, const Sta
- static void smartcard_trace_state_return(SMARTCARD_DEVICE* smartcard, const State_Return* ret)
- {
- char buffer[1024];
--
-+ char* state;
- WINPR_UNUSED(smartcard);
-
- if (!WLog_IsLevelActive(WLog_Get(TAG), g_LogLevel))
- return;
-
-+ state = SCardGetReaderStateString(ret->dwState);
- WLog_LVL(TAG, g_LogLevel, "Reconnect_Return {");
- WLog_LVL(TAG, g_LogLevel, " ReturnCode: %s (0x%08" PRIX32 ")",
- SCardGetErrorString(ret->ReturnCode), ret->ReturnCode);
-- WLog_LVL(TAG, g_LogLevel, " dwState: %s (0x%08" PRIX32 ")", ret->dwState);
-- WLog_LVL(TAG, g_LogLevel, " dwProtocol: %s (0x%08" PRIX32 ")", ret->dwProtocol);
-- WLog_LVL(TAG, g_LogLevel, " cbAtrLen: %s (0x%08" PRIX32 ")", ret->cbAtrLen);
-+ WLog_LVL(TAG, g_LogLevel, " dwState: %s (0x%08" PRIX32 ")", state, ret->dwState);
-+ WLog_LVL(TAG, g_LogLevel, " dwProtocol: %s (0x%08" PRIX32 ")",
-+ SCardGetProtocolString(ret->dwProtocol), ret->dwProtocol);
-+ WLog_LVL(TAG, g_LogLevel, " cbAtrLen: (0x%08" PRIX32 ")", ret->cbAtrLen);
- WLog_LVL(TAG, g_LogLevel, " rgAtr: %s",
- smartcard_array_dump(ret->rgAtr, sizeof(ret->rgAtr), buffer, sizeof(buffer)));
- WLog_LVL(TAG, g_LogLevel, "}");
-+ free(state);
- }
-
- static void smartcard_trace_reconnect_return(SMARTCARD_DEVICE* smartcard,
---
-2.30.2
-
diff --git a/debian/patches/0008-Fixed-linking-dependencies-for-client-geometry-chann.patch b/debian/patches/0008-Fixed-linking-dependencies-for-client-geometry-chann.patch
deleted file mode 100644
index 8251cc2..0000000
--- a/debian/patches/0008-Fixed-linking-dependencies-for-client-geometry-chann.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From de743a836a982807cbb88efdebb66c09eea010f2 Mon Sep 17 00:00:00 2001
-From: akallabeth <akallabeth@posteo.net>
-Date: Tue, 1 Dec 2020 11:44:14 +0100
-Subject: [PATCH 08/36] Fixed linking dependencies for client geometry channel
-
-(cherry picked from commit 7056433c8ecd045912fecb896ffa2eac3aad1410)
----
- channels/geometry/client/CMakeLists.txt | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/channels/geometry/client/CMakeLists.txt b/channels/geometry/client/CMakeLists.txt
-index ea28bff9d..ac9fdc407 100644
---- a/channels/geometry/client/CMakeLists.txt
-+++ b/channels/geometry/client/CMakeLists.txt
-@@ -25,9 +25,10 @@ include_directories(..)
-
- add_channel_client_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} TRUE "DVCPluginEntry")
-
--
--
- set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} winpr)
-+if (NOT BUILTIN_CHANNELS OR NOT BUILD_SHARED_LIBS)
-+ set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp-client)
-+endif()
-
- target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
-
---
-2.30.2
-
diff --git a/debian/patches/0010-Fixed-smartcard_convert_string_list-with-0-length.patch b/debian/patches/0010-Fixed-smartcard_convert_string_list-with-0-length.patch
deleted file mode 100644
index 5146f72..0000000
--- a/debian/patches/0010-Fixed-smartcard_convert_string_list-with-0-length.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 471cda7ef304afb27c2fd1aa5a59078c7401e46e Mon Sep 17 00:00:00 2001
-From: Armin Novak <armin.novak@thincast.com>
-Date: Wed, 3 Mar 2021 11:39:55 +0100
-Subject: [PATCH 10/36] Fixed smartcard_convert_string_list with 0 length
-
-(cherry picked from commit e9904e286f43dea5940182b25740730c55e7c8a6)
----
- channels/smartcard/client/smartcard_pack.c | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/channels/smartcard/client/smartcard_pack.c b/channels/smartcard/client/smartcard_pack.c
-index ed0301bb2..83c9d3023 100644
---- a/channels/smartcard/client/smartcard_pack.c
-+++ b/channels/smartcard/client/smartcard_pack.c
-@@ -351,8 +351,11 @@ static char* smartcard_convert_string_list(const void* in, size_t bytes, BOOL un
-
- if (unicode)
- {
-- length = (bytes / 2);
-- if (ConvertFromUnicode(CP_UTF8, 0, string.wz, (int)length, &mszA, 0, NULL, NULL) !=
-+ length = (bytes / sizeof(WCHAR)) - 1;
-+ mszA = (char*)calloc(length + 1, sizeof(WCHAR));
-+ if (!mszA)
-+ return NULL;
-+ if (ConvertFromUnicode(CP_UTF8, 0, string.wz, (int)length, &mszA, length + 1, NULL, NULL) !=
- (int)length)
- {
- free(mszA);
-@@ -362,10 +365,11 @@ static char* smartcard_convert_string_list(const void* in, size_t bytes, BOOL un
- else
- {
- length = bytes;
-- mszA = (char*)malloc(length);
-+ mszA = (char*)calloc(length, sizeof(char));
- if (!mszA)
- return NULL;
-- CopyMemory(mszA, string.sz, length);
-+ CopyMemory(mszA, string.sz, length - 1);
-+ mszA[length - 1] = '\0';
- }
-
- for (index = 0; index < length - 1; index++)
---
-2.30.2
-
diff --git a/debian/patches/0012-Parse-on-a-copy-of-the-argument-string-for-printer.patch b/debian/patches/0012-Parse-on-a-copy-of-the-argument-string-for-printer.patch
deleted file mode 100644
index 4aaf946..0000000
--- a/debian/patches/0012-Parse-on-a-copy-of-the-argument-string-for-printer.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 9ce4bc351f188ee52786c6f3a6b4ee1b48926bfd Mon Sep 17 00:00:00 2001
-From: akallabeth <akallabeth@posteo.net>
-Date: Thu, 4 Mar 2021 14:26:35 +0100
-Subject: [PATCH 12/36] Parse on a copy of the argument string for printer
-
-If done on original the wrong backend is loaded on autoreconnect
-
-(cherry picked from commit af1c6ebcb49c93d636817ec98f74d07cba9d7f26)
----
- channels/printer/client/printer_main.c | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/channels/printer/client/printer_main.c b/channels/printer/client/printer_main.c
-index dbcc07dc5..170ecb15b 100644
---- a/channels/printer/client/printer_main.c
-+++ b/channels/printer/client/printer_main.c
-@@ -979,7 +979,7 @@ printer_DeviceServiceEntry
-
- device = (RDPDR_PRINTER*)pEntryPoints->device;
- name = device->Name;
-- driver_name = device->DriverName;
-+ driver_name = _strdup(device->DriverName);
-
- /* Secondary argument is one of the following:
- *
-@@ -1016,7 +1016,8 @@ printer_DeviceServiceEntry
- if (!driver)
- {
- WLog_ERR(TAG, "Could not get a printer driver!");
-- return CHANNEL_RC_INITIALIZATION_ERROR;
-+ error = CHANNEL_RC_INITIALIZATION_ERROR;
-+ goto fail;
- }
-
- if (name && name[0])
-@@ -1064,7 +1065,9 @@ printer_DeviceServiceEntry
- }
-
- fail:
-- driver->ReleaseRef(driver);
-+ free(driver_name);
-+ if (driver)
-+ driver->ReleaseRef(driver);
-
- return error;
- }
---
-2.30.2
-
diff --git a/debian/patches/0015-Fix-xf_Pointer_SetPosition-with-smart-sizing.patch b/debian/patches/0015-Fix-xf_Pointer_SetPosition-with-smart-sizing.patch
deleted file mode 100644
index 506e940..0000000
--- a/debian/patches/0015-Fix-xf_Pointer_SetPosition-with-smart-sizing.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 899be1b564ac4f4803de5b81e0711821403d9ed1 Mon Sep 17 00:00:00 2001
-From: akallabeth <akallabeth@posteo.net>
-Date: Mon, 8 Mar 2021 13:52:29 +0100
-Subject: [PATCH 15/36] Fix xf_Pointer_SetPosition with smart-sizing
-
-(cherry picked from commit d3e3ab7b5d5ce376ba72fa1fc0aee2f25c9682b4)
----
- client/X11/xf_event.c | 31 +++++++++++++++++++++++++++++++
- client/X11/xf_event.h | 1 +
- client/X11/xf_graphics.c | 5 ++++-
- 3 files changed, 36 insertions(+), 1 deletion(-)
-
-diff --git a/client/X11/xf_event.c b/client/X11/xf_event.c
-index 60fe9c6b3..99577b1a1 100644
---- a/client/X11/xf_event.c
-+++ b/client/X11/xf_event.c
-@@ -262,6 +262,37 @@ static BOOL xf_event_execute_action_script(xfContext* xfc, const XEvent* event)
- return TRUE;
- }
-
-+void xf_adjust_coordinates_to_screen(xfContext* xfc, UINT32* x, UINT32* y)
-+{
-+ rdpSettings* settings;
-+ INT64 tx, ty;
-+
-+ if (!xfc || !xfc->context.settings || !y || !x)
-+ return;
-+
-+ settings = xfc->context.settings;
-+ tx = *x;
-+ ty = *y;
-+ if (!xfc->remote_app)
-+ {
-+#ifdef WITH_XRENDER
-+
-+ if (xf_picture_transform_required(xfc))
-+ {
-+ double xScalingFactor = xfc->scaledWidth / (double)settings->DesktopWidth;
-+ double yScalingFactor = xfc->scaledHeight / (double)settings->DesktopHeight;
-+ tx = ((tx + xfc->offset_x) * xScalingFactor);
-+ ty = ((ty + xfc->offset_y) * yScalingFactor);
-+ }
-+
-+#endif
-+ }
-+
-+ CLAMP_COORDINATES(tx, ty);
-+ *x = tx;
-+ *y = ty;
-+}
-+
- void xf_event_adjust_coordinates(xfContext* xfc, int* x, int* y)
- {
- rdpSettings* settings;
-diff --git a/client/X11/xf_event.h b/client/X11/xf_event.h
-index 185c83c7c..2269d3eea 100644
---- a/client/X11/xf_event.h
-+++ b/client/X11/xf_event.h
-@@ -33,6 +33,7 @@ void xf_event_SendClientEvent(xfContext* xfc, xfWindow* window, Atom atom, unsig
- ...);
-
- void xf_event_adjust_coordinates(xfContext* xfc, int* x, int* y);
-+void xf_adjust_coordinates_to_screen(xfContext* xfc, UINT32* x, UINT32* y);
-
- BOOL xf_generic_MotionNotify(xfContext* xfc, int x, int y, int state, Window window, BOOL app);
- BOOL xf_generic_ButtonPress(xfContext* xfc, int x, int y, int button, Window window, BOOL app);
-diff --git a/client/X11/xf_graphics.c b/client/X11/xf_graphics.c
-index 54a4b9cc7..1700092f8 100644
---- a/client/X11/xf_graphics.c
-+++ b/client/X11/xf_graphics.c
-@@ -37,6 +37,7 @@
-
- #include "xf_graphics.h"
- #include "xf_gdi.h"
-+#include "xf_event.h"
-
- #include <freerdp/log.h>
- #define TAG CLIENT_TAG("x11")
-@@ -521,6 +522,8 @@ static BOOL xf_Pointer_SetPosition(rdpContext* context, UINT32 x, UINT32 y)
- if (xfc->remote_app && !xfc->focused)
- return TRUE;
-
-+ xf_adjust_coordinates_to_screen(xfc, &x, &y);
-+
- xf_lock_x11(xfc);
-
- rc = XGetWindowAttributes(xfc->display, handle, &current);
-@@ -541,7 +544,7 @@ static BOOL xf_Pointer_SetPosition(rdpContext* context, UINT32 x, UINT32 y)
-
- rc = XWarpPointer(xfc->display, None, handle, 0, 0, 0, 0, x, y);
- if (rc == 0)
-- WLog_WARN(TAG, "xf_Pointer_SetPosition: XWrapPointer==%d", rc);
-+ WLog_WARN(TAG, "xf_Pointer_SetPosition: XWarpPointer==%d", rc);
- tmp.event_mask = current.your_event_mask;
- rc = XChangeWindowAttributes(xfc->display, handle, CWEventMask, &tmp);
- if (rc == 0)
---
-2.30.2
-
diff --git a/debian/patches/0017-Backported-6865-Disable-websockets-command-line-opti.patch b/debian/patches/0017-Backported-6865-Disable-websockets-command-line-opti.patch
deleted file mode 100644
index 1a55a97..0000000
--- a/debian/patches/0017-Backported-6865-Disable-websockets-command-line-opti.patch
+++ /dev/null
@@ -1,145 +0,0 @@
-From f4c87729e393c4f9f522d2731078655f469d9b12 Mon Sep 17 00:00:00 2001
-From: akallabeth <akallabeth@posteo.net>
-Date: Mon, 8 Mar 2021 14:31:17 +0100
-Subject: [PATCH 17/36] Backported #6865: Disable websockets command line
- option
-
----
- client/common/cmdline.c | 30 ++++++++++++++-----
- client/common/cmdline.h | 4 +--
- include/freerdp/settings.h | 4 ++-
- libfreerdp/common/settings_getters.c | 7 +++++
- libfreerdp/common/settings_str.c | 1 +
- libfreerdp/core/gateway/rdg.c | 4 ++-
- .../core/test/settings_property_lists.h | 1 +
- 7 files changed, 39 insertions(+), 12 deletions(-)
-
---- a/client/common/cmdline.c
-+++ b/client/common/cmdline.c
-@@ -2234,15 +2234,29 @@
- settings->GatewayRpcTransport = TRUE;
- settings->GatewayHttpTransport = FALSE;
- }
-- else if (_stricmp(arg->Value, "http") == 0)
-+ else
- {
-- settings->GatewayRpcTransport = FALSE;
-- settings->GatewayHttpTransport = TRUE;
-- }
-- else if (_stricmp(arg->Value, "auto") == 0)
-- {
-- settings->GatewayRpcTransport = TRUE;
-- settings->GatewayHttpTransport = TRUE;
-+ char* c = strchr(arg->Value, ',');
-+ if (c)
-+ {
-+ *c++ = '\0';
-+ if (_stricmp(c, "no-websockets") != 0)
-+ {
-+ return COMMAND_LINE_ERROR_UNEXPECTED_VALUE;
-+ }
-+ freerdp_settings_set_bool(settings, FreeRDP_GatewayHttpUseWebsockets, FALSE);
-+ }
-+
-+ if (_stricmp(arg->Value, "http") == 0)
-+ {
-+ settings->GatewayRpcTransport = FALSE;
-+ settings->GatewayHttpTransport = TRUE;
-+ }
-+ else if (_stricmp(arg->Value, "auto") == 0)
-+ {
-+ settings->GatewayRpcTransport = TRUE;
-+ settings->GatewayHttpTransport = TRUE;
-+ }
- }
- }
- CommandLineSwitchCase(arg, "gat")
---- a/client/common/cmdline.h
-+++ b/client/common/cmdline.h
-@@ -180,8 +180,8 @@
- { "gp", COMMAND_LINE_VALUE_REQUIRED, "<password>", NULL, NULL, -1, NULL, "Gateway password" },
- { "grab-keyboard", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueTrue, NULL, -1, NULL,
- "Grab keyboard" },
-- { "gt", COMMAND_LINE_VALUE_REQUIRED, "[rpc|http|auto]", NULL, NULL, -1, NULL,
-- "Gateway transport type" },
-+ { "gt", COMMAND_LINE_VALUE_REQUIRED, "[rpc|http[,no-websockets]|auto[,no-websockets]]", NULL,
-+ NULL, -1, NULL, "Gateway transport type" },
- { "gu", COMMAND_LINE_VALUE_REQUIRED, "[[<domain>\\]<user>|<user>[@<domain>]]", NULL, NULL, -1,
- NULL, "Gateway username" },
- { "gat", COMMAND_LINE_VALUE_REQUIRED, "<access token>", NULL, NULL, -1, NULL,
---- a/include/freerdp/settings.h
-+++ b/include/freerdp/settings.h
-@@ -751,6 +751,7 @@
- #define FreeRDP_GatewayAccessToken (1997)
- #define FreeRDP_GatewayAcceptedCert (1998)
- #define FreeRDP_GatewayAcceptedCertLength (1999)
-+#define FreeRDP_GatewayHttpUseWebsockets (2000)
- #define FreeRDP_ProxyType (2015)
- #define FreeRDP_ProxyHostname (2016)
- #define FreeRDP_ProxyPort (2017)
-@@ -1252,7 +1253,8 @@
- ALIGN64 char* GatewayAccessToken; /* 1997 */
- ALIGN64 char* GatewayAcceptedCert; /* 1998 */
- ALIGN64 UINT32 GatewayAcceptedCertLength; /* 1999 */
-- UINT64 padding2015[2015 - 2000]; /* 2000 */
-+ ALIGN64 BOOL GatewayHttpUseWebsockets; /* 2000 */
-+ UINT64 padding2015[2015 - 2001]; /* 2001 */
-
- /* Proxy */
- ALIGN64 UINT32 ProxyType; /* 2015 */
---- a/libfreerdp/common/settings_getters.c
-+++ b/libfreerdp/common/settings_getters.c
-@@ -192,6 +192,9 @@
- case FreeRDP_GatewayHttpTransport:
- return settings->GatewayHttpTransport;
-
-+ case FreeRDP_GatewayHttpUseWebsockets:
-+ return settings->GatewayHttpUseWebsockets;
-+
- case FreeRDP_GatewayRpcTransport:
- return settings->GatewayRpcTransport;
-
-@@ -754,6 +757,10 @@
- settings->GatewayHttpTransport = val;
- break;
-
-+ case FreeRDP_GatewayHttpUseWebsockets:
-+ settings->GatewayHttpUseWebsockets = val;
-+ break;
-+
- case FreeRDP_GatewayRpcTransport:
- settings->GatewayRpcTransport = val;
- break;
---- a/libfreerdp/common/settings_str.c
-+++ b/libfreerdp/common/settings_str.c
-@@ -74,6 +74,7 @@
- { FreeRDP_GatewayBypassLocal, 0, "FreeRDP_GatewayBypassLocal" },
- { FreeRDP_GatewayEnabled, 0, "FreeRDP_GatewayEnabled" },
- { FreeRDP_GatewayHttpTransport, 0, "FreeRDP_GatewayHttpTransport" },
-+ { FreeRDP_GatewayHttpUseWebsockets, 0, "FreeRDP_GatewayHttpUseWebsockets" },
- { FreeRDP_GatewayRpcTransport, 0, "FreeRDP_GatewayRpcTransport" },
- { FreeRDP_GatewayUdpTransport, 0, "FreeRDP_GatewayUdpTransport" },
- { FreeRDP_GatewayUseSameCredentials, 0, "FreeRDP_GatewayUseSameCredentials" },
---- a/libfreerdp/core/gateway/rdg.c
-+++ b/libfreerdp/core/gateway/rdg.c
-@@ -2547,7 +2547,9 @@
- !http_context_set_user_agent(rdg->http, "MS-RDGateway/1.0") ||
- !http_context_set_host(rdg->http, rdg->settings->GatewayHostname) ||
- !http_context_set_rdg_connection_id(rdg->http, bracedUuid) ||
-- !http_context_enable_websocket_upgrade(rdg->http, TRUE))
-+ !http_context_enable_websocket_upgrade(
-+ rdg->http,
-+ freerdp_settings_get_bool(rdg->settings, FreeRDP_GatewayHttpUseWebsockets)))
- {
- goto rdg_alloc_error;
- }
---- a/libfreerdp/core/test/settings_property_lists.h
-+++ b/libfreerdp/core/test/settings_property_lists.h
-@@ -63,6 +63,7 @@
- FreeRDP_GatewayBypassLocal,
- FreeRDP_GatewayEnabled,
- FreeRDP_GatewayHttpTransport,
-+ FreeRDP_GatewayHttpUseWebsockets,
- FreeRDP_GatewayRpcTransport,
- FreeRDP_GatewayUdpTransport,
- FreeRDP_GatewayUseSameCredentials,
diff --git a/debian/patches/0019-Check-smartcard_convert_string_list-for-NULL-string.patch b/debian/patches/0019-Check-smartcard_convert_string_list-for-NULL-string.patch
deleted file mode 100644
index 648639f..0000000
--- a/debian/patches/0019-Check-smartcard_convert_string_list-for-NULL-string.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 42f9dff46f736eb3f58d4bb1731710bda00608f9 Mon Sep 17 00:00:00 2001
-From: akallabeth <akallabeth@posteo.net>
-Date: Tue, 9 Mar 2021 09:22:39 +0100
-Subject: [PATCH 19/36] Check smartcard_convert_string_list for NULL string
-
-In #6821 it has been reported that there are buggy smartcard
-drivers that report a string size but fail to allocate the string
-itself. This check avoids a crash with such input parameters
-
-(cherry picked from commit f8b1e662b33f7b8f77cf6582d549348c2d048a2e)
----
- channels/smartcard/client/smartcard_pack.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/channels/smartcard/client/smartcard_pack.c b/channels/smartcard/client/smartcard_pack.c
-index 83c9d3023..f70eb4e5d 100644
---- a/channels/smartcard/client/smartcard_pack.c
-+++ b/channels/smartcard/client/smartcard_pack.c
-@@ -349,6 +349,9 @@ static char* smartcard_convert_string_list(const void* in, size_t bytes, BOOL un
- if (bytes < 1)
- return NULL;
-
-+ if (in == NULL)
-+ return NULL;
-+
- if (unicode)
- {
- length = (bytes / sizeof(WCHAR)) - 1;
---
-2.30.2
-
diff --git a/debian/patches/0020-Use-specific-names-for-drive-hotplug-special-values.patch b/debian/patches/0020-Use-specific-names-for-drive-hotplug-special-values.patch
deleted file mode 100644
index 1ee2cf8..0000000
--- a/debian/patches/0020-Use-specific-names-for-drive-hotplug-special-values.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 187cbdfe2c0abdef554306394d12a9b28a5100eb Mon Sep 17 00:00:00 2001
-From: akallabeth <akallabeth@posteo.net>
-Date: Tue, 9 Mar 2021 12:09:58 +0100
-Subject: [PATCH 20/36] Use specific names for drive hotplug special values
-
-(cherry picked from commit b1be3d78fcc63a5842f7707a139b2582a4a42b21)
----
- client/common/cmdline.c | 24 ++++++++++++++++++++++--
- 1 file changed, 22 insertions(+), 2 deletions(-)
-
---- a/client/common/cmdline.c
-+++ b/client/common/cmdline.c
-@@ -120,6 +120,23 @@
- return TRUE;
- }
-
-+static char* name_from_path(const char* path)
-+{
-+ const char* name = "NULL";
-+ if (path)
-+ {
-+ if (_strnicmp(path, "%", 2) == 0)
-+ name = "home";
-+ else if (_strnicmp(path, "*", 2) == 0)
-+ name = "hotplug-all";
-+ else if (_strnicmp(path, "DynamicDrives", 2) == 0)
-+ name = "hotplug";
-+ else
-+ name = path;
-+ }
-+ return _strdup(name);
-+}
-+
- static BOOL freerdp_client_add_drive(rdpSettings* settings, const char* path, const char* name)
- {
- RDPDR_DRIVE* drive;
-@@ -151,8 +168,10 @@
- goto fail;
- }
- else /* We need a name to send to the server. */
-- if (!(drive->Name = _strdup(path)))
-- goto fail;
-+ {
-+ if (!(drive->Name = name_from_path(path)))
-+ goto fail;
-+ }
-
- if (!path || !freerdp_sanitize_drive_name(drive->Name, "\\/", "__"))
- goto fail;
-@@ -3557,6 +3576,7 @@
- /* Syntax: Comma seperated list of the following entries:
- * '*' ... Redirect all drives, including hotplug
- * 'DynamicDrives' ... hotplug
-+ * '%' ... user home directory
- * <label>(<path>) ... One or more paths to redirect.
- * <path>(<label>) ... One or more paths to redirect.
- * <path> ... One or more paths to redirect.
diff --git a/debian/patches/0021-Filter-RDPDR-types-other-than-drives-on-windows-hotp.patch b/debian/patches/0021-Filter-RDPDR-types-other-than-drives-on-windows-hotp.patch
deleted file mode 100644
index 0c0e6a4..0000000
--- a/debian/patches/0021-Filter-RDPDR-types-other-than-drives-on-windows-hotp.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From c37593d9fc84f6344381cbfcf0631d3798d169b0 Mon Sep 17 00:00:00 2001
-From: Armin Novak <armin.novak@thincast.com>
-Date: Tue, 9 Mar 2021 12:23:37 +0100
-Subject: [PATCH 21/36] Filter RDPDR types other than drives on windows hotplug
-
-(cherry picked from commit 6f599eabbedace4adc215186783deec680057003)
----
- channels/rdpdr/client/rdpdr_main.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/channels/rdpdr/client/rdpdr_main.c b/channels/rdpdr/client/rdpdr_main.c
-index e59bf0f64..617ea4287 100644
---- a/channels/rdpdr/client/rdpdr_main.c
-+++ b/channels/rdpdr/client/rdpdr_main.c
-@@ -129,7 +129,7 @@ static UINT drive_hotplug_thread_terminate(rdpdrPlugin* rdpdr)
-
- #elif _WIN32
-
--BOOL check_path(char* path)
-+BOOL check_path(const char* path)
- {
- UINT type = GetDriveTypeA(path);
-
-@@ -244,6 +244,9 @@ LRESULT CALLBACK hotplug_proc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
- device_ext = (DEVICE_DRIVE_EXT*)ListDictionary_GetItemValue(
- rdpdr->devman->devices, (void*)keys[j]);
-
-+ if (device_ext->device.type != RDPDR_DTYP_FILESYSTEM)
-+ continue;
-+
- if (device_ext->path[0] == drive_name_upper ||
- device_ext->path[0] == drive_name_lower)
- {
---
-2.30.2
-
diff --git a/debian/patches/0023-use-tlsOut-BIO-when-using-websocket-in-rdg_bio_ctrl.patch b/debian/patches/0023-use-tlsOut-BIO-when-using-websocket-in-rdg_bio_ctrl.patch
deleted file mode 100644
index 9f7d346..0000000
--- a/debian/patches/0023-use-tlsOut-BIO-when-using-websocket-in-rdg_bio_ctrl.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From c1387856692d28ded58f66bff2e294edf0f9c0ac Mon Sep 17 00:00:00 2001
-From: akarl <mike@mwsys.mine.bz>
-Date: Fri, 5 Mar 2021 18:19:06 +0100
-Subject: [PATCH 23/36] use tlsOut BIO when using websocket in rdg_bio_ctrl
-
-(cherry picked from commit 0e19c443e41cdc031a38a6ea24298972420af778)
----
- libfreerdp/core/gateway/rdg.c | 12 ++++++++++--
- 1 file changed, 10 insertions(+), 2 deletions(-)
-
-diff --git a/libfreerdp/core/gateway/rdg.c b/libfreerdp/core/gateway/rdg.c
-index 4ac98b1c9..ff2d06aa5 100644
---- a/libfreerdp/core/gateway/rdg.c
-+++ b/libfreerdp/core/gateway/rdg.c
-@@ -1537,7 +1537,7 @@ DWORD rdg_get_event_handles(rdpRdg* rdg, HANDLE* events, DWORD count)
- return 0;
- }
-
-- if (rdg->tlsIn && rdg->tlsIn->bio)
-+ if (!rdg->transferEncoding.isWebsocketTransport && rdg->tlsIn && rdg->tlsIn->bio)
- {
- if (events && (nCount < count))
- {
-@@ -2403,7 +2403,8 @@ static long rdg_bio_ctrl(BIO* bio, int cmd, long arg1, void* arg2)
- if (cmd == BIO_CTRL_FLUSH)
- {
- (void)BIO_flush(tlsOut->bio);
-- (void)BIO_flush(tlsIn->bio);
-+ if (!rdg->transferEncoding.isWebsocketTransport)
-+ (void)BIO_flush(tlsIn->bio);
- status = 1;
- }
- else if (cmd == BIO_C_SET_NONBLOCK)
-@@ -2418,6 +2419,10 @@ static long rdg_bio_ctrl(BIO* bio, int cmd, long arg1, void* arg2)
- else if (cmd == BIO_C_WRITE_BLOCKED)
- {
- BIO* bio = tlsIn->bio;
-+
-+ if (rdg->transferEncoding.isWebsocketTransport)
-+ bio = tlsOut->bio;
-+
- status = BIO_write_blocked(bio);
- }
- else if (cmd == BIO_C_WAIT_READ)
-@@ -2437,6 +2442,9 @@ static long rdg_bio_ctrl(BIO* bio, int cmd, long arg1, void* arg2)
- int timeout = (int)arg1;
- BIO* bio = tlsIn->bio;
-
-+ if (rdg->transferEncoding.isWebsocketTransport)
-+ bio = tlsOut->bio;
-+
- if (BIO_write_blocked(bio))
- status = BIO_wait_write(bio, timeout);
- else if (BIO_read_blocked(bio))
---
-2.30.2
-
diff --git a/debian/patches/0024-Added-bounds-checks-to-gfx-commands.patch b/debian/patches/0024-Added-bounds-checks-to-gfx-commands.patch
deleted file mode 100644
index fc2ddbd..0000000
--- a/debian/patches/0024-Added-bounds-checks-to-gfx-commands.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 9308d0c6365861fbd2eafa0a0881acef460cfc15 Mon Sep 17 00:00:00 2001
-From: Armin Novak <armin.novak@thincast.com>
-Date: Fri, 12 Mar 2021 09:12:28 +0100
-Subject: [PATCH 24/36] Added bounds checks to gfx commands
-
-(cherry picked from commit dd61853142a07af0eca80c901292075373a6b2d6)
----
- libfreerdp/gdi/gfx.c | 33 +++++++++++++++++++++++++++++++++
- 1 file changed, 33 insertions(+)
-
-diff --git a/libfreerdp/gdi/gfx.c b/libfreerdp/gdi/gfx.c
-index 238c8138d..2221cc3f7 100644
---- a/libfreerdp/gdi/gfx.c
-+++ b/libfreerdp/gdi/gfx.c
-@@ -42,6 +42,27 @@ static BOOL is_rect_valid(const RECTANGLE_16* rect, size_t width, size_t height)
- return TRUE;
- }
-
-+static BOOL is_within_surface(const gdiGfxSurface* surface, const RDPGFX_SURFACE_COMMAND* cmd)
-+{
-+ RECTANGLE_16 rect;
-+ if (!surface || !cmd)
-+ return FALSE;
-+ rect.left = cmd->left;
-+ rect.top = cmd->top;
-+ rect.right = cmd->right;
-+ rect.bottom = cmd->bottom;
-+ if (!is_rect_valid(&rect, surface->width, surface->height))
-+ {
-+ WLog_ERR(TAG,
-+ "%s: Command rect %" PRIu32 "x" PRIu32 "-" PRIu32 "x" PRIu32
-+ " not within bounds of " PRIu32 "x" PRIu32,
-+ __FUNCTION__, rect.left, rect.top, cmd->width, cmd->height, surface->width,
-+ surface->height);
-+ return FALSE;
-+ }
-+ return TRUE;
-+}
-+
- static DWORD gfx_align_scanline(DWORD widthInBytes, DWORD alignment)
- {
- const UINT32 align = alignment;
-@@ -259,6 +280,9 @@ static UINT gdi_SurfaceCommand_Uncompressed(rdpGdi* gdi, RdpgfxClientContext* co
- return ERROR_NOT_FOUND;
- }
-
-+ if (!is_within_surface(surface, cmd))
-+ return ERROR_INVALID_DATA;
-+
- if (!freerdp_image_copy(surface->data, surface->format, surface->scanline, cmd->left, cmd->top,
- cmd->width, cmd->height, cmd->data, cmd->format, 0, 0, 0, NULL,
- FREERDP_FLIP_NONE))
-@@ -414,6 +438,9 @@ static UINT gdi_SurfaceCommand_Planar(rdpGdi* gdi, RdpgfxClientContext* context,
-
- DstData = surface->data;
-
-+ if (!is_within_surface(surface, cmd))
-+ return ERROR_INVALID_DATA;
-+
- if (!planar_decompress(surface->codecs->planar, cmd->data, cmd->length, cmd->width, cmd->height,
- DstData, surface->format, surface->scanline, cmd->left, cmd->top,
- cmd->width, cmd->height, FALSE))
-@@ -686,6 +713,9 @@ static UINT gdi_SurfaceCommand_Alpha(rdpGdi* gdi, RdpgfxClientContext* context,
- return ERROR_NOT_FOUND;
- }
-
-+ if (!is_within_surface(surface, cmd))
-+ return ERROR_INVALID_DATA;
-+
- Stream_Read_UINT16(&s, alphaSig);
- Stream_Read_UINT16(&s, compressed);
-
-@@ -815,6 +845,9 @@ static UINT gdi_SurfaceCommand_Progressive(rdpGdi* gdi, RdpgfxClientContext* con
- return ERROR_NOT_FOUND;
- }
-
-+ if (!is_within_surface(surface, cmd))
-+ return ERROR_INVALID_DATA;
-+
- rc = progressive_create_surface_context(surface->codecs->progressive, cmd->surfaceId,
- surface->width, surface->height);
-
---
-2.30.2
-
diff --git a/debian/patches/0025-Added-bounds-check-in-rdpgfx_recv_wire_to_surface_1_.patch b/debian/patches/0025-Added-bounds-check-in-rdpgfx_recv_wire_to_surface_1_.patch
deleted file mode 100644
index 9e85a73..0000000
--- a/debian/patches/0025-Added-bounds-check-in-rdpgfx_recv_wire_to_surface_1_.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 9249d900c466d3341f4c4e072fc535e9aecc0e9d Mon Sep 17 00:00:00 2001
-From: Armin Novak <armin.novak@thincast.com>
-Date: Fri, 12 Mar 2021 09:29:55 +0100
-Subject: [PATCH 25/36] Added bounds check in rdpgfx_recv_wire_to_surface_1_pdu
-
-(cherry picked from commit 5fc3846f7793d4afe48387ac3aeffd4ad6852bab)
----
- channels/rdpgfx/client/rdpgfx_main.c | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-diff --git a/channels/rdpgfx/client/rdpgfx_main.c b/channels/rdpgfx/client/rdpgfx_main.c
-index 94b5b68de..67b3a7db4 100644
---- a/channels/rdpgfx/client/rdpgfx_main.c
-+++ b/channels/rdpgfx/client/rdpgfx_main.c
-@@ -999,6 +999,19 @@ static UINT rdpgfx_recv_wire_to_surface_1_pdu(RDPGFX_CHANNEL_CALLBACK* callback,
- cmd.data = pdu.bitmapData;
- cmd.extra = NULL;
-
-+ if (cmd.right < cmd.left)
-+ {
-+ WLog_Print(gfx->log, WLOG_ERROR, "RecvWireToSurface1Pdu right=%" PRIu32 " < left=%" PRIu32,
-+ cmd.right, cmd.left);
-+ return ERROR_INVALID_DATA;
-+ }
-+ if (cmd.bottom < cmd.top)
-+ {
-+ WLog_Print(gfx->log, WLOG_ERROR, "RecvWireToSurface1Pdu bottom=%" PRIu32 " < top=%" PRIu32,
-+ cmd.bottom, cmd.top);
-+ return ERROR_INVALID_DATA;
-+ }
-+
- if ((error = rdpgfx_decode(gfx, &cmd)))
- WLog_Print(gfx->log, WLOG_ERROR, "rdpgfx_decode failed with error %" PRIu32 "!", error);
-
---
-2.30.2
-
diff --git a/debian/patches/0026-Added-fuzzying-test-for-planar-decoder.patch b/debian/patches/0026-Added-fuzzying-test-for-planar-decoder.patch
deleted file mode 100644
index f9b21cb..0000000
--- a/debian/patches/0026-Added-fuzzying-test-for-planar-decoder.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From bd3f9cfd9fda7da05b1a12fe9e48c69e3ac45e67 Mon Sep 17 00:00:00 2001
-From: Armin Novak <armin.novak@thincast.com>
-Date: Fri, 12 Mar 2021 10:07:44 +0100
-Subject: [PATCH 26/36] Added fuzzying test for planar decoder
-
-(cherry picked from commit 9bbc2cd094ac837a8f1196e80e7643c00436e486)
----
- .../codec/test/TestFreeRDPCodecPlanar.c | 116 ++++++++++++++++++
- 1 file changed, 116 insertions(+)
-
-diff --git a/libfreerdp/codec/test/TestFreeRDPCodecPlanar.c b/libfreerdp/codec/test/TestFreeRDPCodecPlanar.c
-index b1235ec8e..aac0a9f54 100644
---- a/libfreerdp/codec/test/TestFreeRDPCodecPlanar.c
-+++ b/libfreerdp/codec/test/TestFreeRDPCodecPlanar.c
-@@ -3,6 +3,7 @@
-
- #include <winpr/crt.h>
- #include <winpr/print.h>
-+#include <winpr/crypto.h>
-
- #include <freerdp/freerdp.h>
- #include <freerdp/codec/color.h>
-@@ -5650,12 +5651,127 @@ fail:
- return rc;
- }
-
-+static UINT32 prand(UINT32 max)
-+{
-+ UINT32 tmp;
-+ if (max <= 1)
-+ return 1;
-+ winpr_RAND((BYTE*)&tmp, sizeof(tmp));
-+ return tmp % (max - 1) + 1;
-+}
-+
-+static BOOL FuzzPlanar(void)
-+{
-+ UINT32 x;
-+ BOOL rc = FALSE;
-+ const DWORD planarFlags = PLANAR_FORMAT_HEADER_NA | PLANAR_FORMAT_HEADER_RLE;
-+ BITMAP_PLANAR_CONTEXT* planar = freerdp_bitmap_planar_context_new(planarFlags, 64, 64);
-+
-+ if (!planar)
-+ goto fail;
-+
-+ for (x = 0; x < 10000; x++)
-+ {
-+ BYTE data[0x10000] = { 0 };
-+ size_t dataSize = 0x10000;
-+ BYTE dstData[0x10000] = { 0 };
-+
-+ UINT32 DstFormat;
-+ UINT32 nDstStep;
-+ UINT32 nXDst;
-+ UINT32 nYDst;
-+ UINT32 nDstWidth;
-+ UINT32 nDstHeight;
-+ BOOL invalid = TRUE;
-+ do
-+ {
-+ switch (prand(17) - 1)
-+ {
-+ case 0:
-+ DstFormat = PIXEL_FORMAT_RGB8;
-+ break;
-+ case 1:
-+ DstFormat = PIXEL_FORMAT_BGR15;
-+ break;
-+ case 2:
-+ DstFormat = PIXEL_FORMAT_RGB15;
-+ break;
-+ case 3:
-+ DstFormat = PIXEL_FORMAT_ABGR15;
-+ break;
-+ case 4:
-+ DstFormat = PIXEL_FORMAT_ABGR15;
-+ break;
-+ case 5:
-+ DstFormat = PIXEL_FORMAT_BGR16;
-+ break;
-+ case 6:
-+ DstFormat = PIXEL_FORMAT_RGB16;
-+ break;
-+ case 7:
-+ DstFormat = PIXEL_FORMAT_BGR24;
-+ break;
-+ case 8:
-+ DstFormat = PIXEL_FORMAT_RGB24;
-+ break;
-+ case 9:
-+ DstFormat = PIXEL_FORMAT_BGRA32;
-+ break;
-+ case 10:
-+ DstFormat = PIXEL_FORMAT_BGRX32;
-+ break;
-+ case 11:
-+ DstFormat = PIXEL_FORMAT_RGBA32;
-+ break;
-+ case 12:
-+ DstFormat = PIXEL_FORMAT_RGBX32;
-+ break;
-+ case 13:
-+ DstFormat = PIXEL_FORMAT_ABGR32;
-+ break;
-+ case 14:
-+ DstFormat = PIXEL_FORMAT_XBGR32;
-+ break;
-+ case 15:
-+ DstFormat = PIXEL_FORMAT_ARGB32;
-+ break;
-+ case 16:
-+ DstFormat = PIXEL_FORMAT_XRGB32;
-+ break;
-+ default:
-+ break;
-+ }
-+ nDstStep = prand(sizeof(dstData));
-+ nXDst = prand(nDstStep);
-+ nYDst = prand(sizeof(dstData) / nDstStep);
-+ nDstWidth = prand(nDstStep / GetBytesPerPixel(DstFormat));
-+ nDstHeight = prand(sizeof(dstData) / nDstStep);
-+ invalid = nXDst * GetBytesPerPixel(DstFormat) + (nYDst + nDstHeight) * nDstStep >
-+ sizeof(dstData);
-+ } while (invalid);
-+ printf("DstFormat=%s, nXDst=%" PRIu32 ", nYDst=%" PRIu32 ", nDstWidth=%" PRIu32
-+ ", nDstHeight=%" PRIu32 ", nDstStep=%" PRIu32 ", total size=%" PRIuz "\n",
-+ FreeRDPGetColorFormatName(DstFormat), nXDst, nYDst, nDstWidth, nDstHeight, nDstStep,
-+ sizeof(dstData));
-+ planar_decompress(planar, data, dataSize, prand(4096), prand(4096), dstData, DstFormat,
-+ nDstStep, nXDst, nYDst, nDstWidth, nDstHeight, prand(2));
-+ }
-+
-+ rc = TRUE;
-+fail:
-+ freerdp_bitmap_planar_context_free(planar);
-+ return rc;
-+}
-+
- int TestFreeRDPCodecPlanar(int argc, char* argv[])
- {
- UINT32 x;
- WINPR_UNUSED(argc);
- WINPR_UNUSED(argv);
-
-+ if (!FuzzPlanar())
-+ return -2;
-+
- for (x = 0; x < colorFormatCount; x++)
- {
- if (!TestPlanar(colorFormatList[x]))
---
-2.30.2
-
diff --git a/debian/patches/0027-Added-missing-bounds-check.patch b/debian/patches/0027-Added-missing-bounds-check.patch
deleted file mode 100644
index fb60b98..0000000
--- a/debian/patches/0027-Added-missing-bounds-check.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From 602fb7d788446969ccfedb8dab4a9abd0ab7df23 Mon Sep 17 00:00:00 2001
-From: Armin Novak <armin.novak@thincast.com>
-Date: Fri, 12 Mar 2021 10:15:51 +0100
-Subject: [PATCH 27/36] Added missing bounds check.
-
-(cherry picked from commit 2e6069d95b997d0dc7d2cc118255570d22f0ae0c)
----
- libfreerdp/codec/planar.c | 23 +++++++++++++++++++----
- 1 file changed, 19 insertions(+), 4 deletions(-)
-
-diff --git a/libfreerdp/codec/planar.c b/libfreerdp/codec/planar.c
-index f31c2d46a..8588a9e21 100644
---- a/libfreerdp/codec/planar.c
-+++ b/libfreerdp/codec/planar.c
-@@ -508,7 +508,7 @@ static INLINE BOOL writeLine(BYTE** ppRgba, UINT32 DstFormat, UINT32 width, cons
- static INLINE BOOL planar_decompress_planes_raw(const BYTE* pSrcData[4], BYTE* pDstData,
- UINT32 DstFormat, UINT32 nDstStep, UINT32 nXDst,
- UINT32 nYDst, UINT32 nWidth, UINT32 nHeight,
-- BOOL vFlip)
-+ BOOL vFlip, UINT32 totalHeight)
- {
- INT32 y;
- INT32 beg, end, inc;
-@@ -516,6 +516,7 @@ static INLINE BOOL planar_decompress_planes_raw(const BYTE* pSrcData[4], BYTE* p
- const BYTE* pG = pSrcData[1];
- const BYTE* pB = pSrcData[2];
- const BYTE* pA = pSrcData[3];
-+ const UINT32 bpp = GetBytesPerPixel(DstFormat);
-
- if (vFlip)
- {
-@@ -530,9 +531,20 @@ static INLINE BOOL planar_decompress_planes_raw(const BYTE* pSrcData[4], BYTE* p
- inc = 1;
- }
-
-+ if (nYDst + nHeight > totalHeight)
-+ return FALSE;
-+
-+ if ((nXDst + nWidth) * bpp > nDstStep)
-+ return FALSE;
-+
- for (y = beg; y != end; y += inc)
- {
-- BYTE* pRGB = &pDstData[((nYDst + y) * nDstStep) + (nXDst * GetBytesPerPixel(DstFormat))];
-+ BYTE* pRGB;
-+
-+ if (y > (INT64)nHeight)
-+ return FALSE;
-+
-+ pRGB = &pDstData[((nYDst + y) * nDstStep) + (nXDst * bpp)];
-
- if (!writeLine(&pRGB, DstFormat, nWidth, &pR, &pG, &pB, &pA))
- return FALSE;
-@@ -739,6 +751,7 @@ BOOL planar_decompress(BITMAP_PLANAR_CONTEXT* planar, const BYTE* pSrcData, UINT
- UINT32 TempFormat;
- BYTE* pTempData = pDstData;
- UINT32 nTempStep = nDstStep;
-+ UINT32 nTotalHeight = nYDst + nDstHeight;
-
- if (useAlpha)
- TempFormat = PIXEL_FORMAT_BGRA32;
-@@ -749,12 +762,13 @@ BOOL planar_decompress(BITMAP_PLANAR_CONTEXT* planar, const BYTE* pSrcData, UINT
- {
- pTempData = planar->pTempData;
- nTempStep = planar->nTempStep;
-+ nTotalHeight = planar->maxHeight;
- }
-
- if (!rle) /* RAW */
- {
- if (!planar_decompress_planes_raw(planes, pTempData, TempFormat, nTempStep, nXDst,
-- nYDst, nSrcWidth, nSrcHeight, vFlip))
-+ nYDst, nSrcWidth, nSrcHeight, vFlip, nTotalHeight))
- return FALSE;
-
- if (alpha)
-@@ -819,6 +833,7 @@ BOOL planar_decompress(BITMAP_PLANAR_CONTEXT* planar, const BYTE* pSrcData, UINT
- UINT32 TempFormat;
- BYTE* pTempData = planar->pTempData;
- UINT32 nTempStep = planar->nTempStep;
-+ UINT32 nTotalHeight = planar->maxHeight;
-
- if (useAlpha)
- TempFormat = PIXEL_FORMAT_BGRA32;
-@@ -901,7 +916,7 @@ BOOL planar_decompress(BITMAP_PLANAR_CONTEXT* planar, const BYTE* pSrcData, UINT
- }
-
- if (!planar_decompress_planes_raw(planes, pTempData, TempFormat, nTempStep, nXDst,
-- nYDst, nSrcWidth, nSrcHeight, vFlip))
-+ nYDst, nSrcWidth, nSrcHeight, vFlip, nTotalHeight))
- return FALSE;
-
- if (alpha)
---
-2.30.2
-
diff --git a/debian/patches/0028-Fixed-mac-issues-with-smartcard-context-cleanup-6890.patch b/debian/patches/0028-Fixed-mac-issues-with-smartcard-context-cleanup-6890.patch
deleted file mode 100644
index 0062de6..0000000
--- a/debian/patches/0028-Fixed-mac-issues-with-smartcard-context-cleanup-6890.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 9ba06525d6bef66d457264e202fbb8f38473a686 Mon Sep 17 00:00:00 2001
-From: akallabeth <akallabeth@users.noreply.github.com>
-Date: Fri, 12 Mar 2021 08:56:23 +0100
-Subject: [PATCH 28/36] Fixed mac issues with smartcard context cleanup (#6890)
-
-(cherry picked from commit b8a8ae4622a2c426c54c300b32c50316f0af42b0)
----
- channels/smartcard/client/smartcard_main.c | 25 +++-------------------
- 1 file changed, 3 insertions(+), 22 deletions(-)
-
-diff --git a/channels/smartcard/client/smartcard_main.c b/channels/smartcard/client/smartcard_main.c
-index 82fb58728..2df4c14e3 100644
---- a/channels/smartcard/client/smartcard_main.c
-+++ b/channels/smartcard/client/smartcard_main.c
-@@ -180,6 +180,7 @@ void smartcard_context_free(void* pCtx)
-
- /* cancel blocking calls like SCardGetStatusChange */
- SCardCancel(pContext->hContext);
-+ SCardReleaseContext(pContext->hContext);
-
- if (MessageQueue_PostQuit(pContext->IrpQueue, 0) &&
- (WaitForSingleObject(pContext->thread, INFINITE) == WAIT_FAILED))
-@@ -237,7 +238,7 @@ static void smartcard_release_all_contexts(SMARTCARD_DEVICE* smartcard)
-
- /* Put thread to sleep so that PC/SC can process the cancel requests. This fixes a race
- * condition that sometimes caused the pc/sc daemon to crash on MacOS (_xpc_api_misuse) */
-- Sleep(100);
-+ SleepEx(100, FALSE);
-
- /**
- * Call SCardReleaseContext on remaining contexts and remove them from rgSCardContextList.
-@@ -251,27 +252,7 @@ static void smartcard_release_all_contexts(SMARTCARD_DEVICE* smartcard)
-
- for (index = 0; index < keyCount; index++)
- {
-- pContext = (SMARTCARD_CONTEXT*)ListDictionary_Remove(smartcard->rgSCardContextList,
-- (void*)pKeys[index]);
--
-- if (!pContext)
-- continue;
--
-- hContext = pContext->hContext;
--
-- if (SCardIsValidContext(hContext) == SCARD_S_SUCCESS)
-- {
-- SCardReleaseContext(hContext);
--
-- if (MessageQueue_PostQuit(pContext->IrpQueue, 0) &&
-- (WaitForSingleObject(pContext->thread, INFINITE) == WAIT_FAILED))
-- WLog_ERR(TAG, "WaitForSingleObject failed with error %" PRIu32 "!",
-- GetLastError());
--
-- CloseHandle(pContext->thread);
-- MessageQueue_Free(pContext->IrpQueue);
-- free(pContext);
-- }
-+ ListDictionary_SetItemValue(smartcard->rgSCardContextList, (void*)pKeys[index], NULL);
- }
-
- free(pKeys);
---
-2.30.2
-
diff --git a/debian/patches/0031-Fix-monitor-list.patch b/debian/patches/0031-Fix-monitor-list.patch
deleted file mode 100644
index 20aad4a..0000000
--- a/debian/patches/0031-Fix-monitor-list.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 9e1e3185128146f74f4b4694b56caa1478a0df77 Mon Sep 17 00:00:00 2001
-From: Armin Novak <armin.novak@thincast.com>
-Date: Fri, 12 Mar 2021 11:53:34 +0100
-Subject: [PATCH 31/36] Fix /monitor-list
-
----
- client/X11/cli/xfreerdp.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/client/X11/cli/xfreerdp.c b/client/X11/cli/xfreerdp.c
-index 5b7021944..8db4d39e7 100644
---- a/client/X11/cli/xfreerdp.c
-+++ b/client/X11/cli/xfreerdp.c
-@@ -59,11 +59,9 @@ int main(int argc, char* argv[])
- status = freerdp_client_settings_parse_command_line(context->settings, argc, argv, FALSE);
- if (status)
- {
-- BOOL list = settings->ListMonitors;
--
- rc = freerdp_client_settings_command_line_status_print(settings, status, argc, argv);
-
-- if (list)
-+ if (settings->ListMonitors)
- xf_list_monitors(xfc);
-
- goto out;
---
-2.30.2
-
diff --git a/debian/patches/0032-Fixed-CodeQL-warnings.patch b/debian/patches/0032-Fixed-CodeQL-warnings.patch
deleted file mode 100644
index 1505b4a..0000000
--- a/debian/patches/0032-Fixed-CodeQL-warnings.patch
+++ /dev/null
@@ -1,680 +0,0 @@
-From 7beda29158ece1234c41e5502d44062c79ac9dba Mon Sep 17 00:00:00 2001
-From: akallabeth <akallabeth@posteo.net>
-Date: Mon, 25 Jan 2021 10:06:01 +0100
-Subject: [PATCH 32/36] Fixed CodeQL warnings
-
-(cherry picked from commit 95a9e60827c91cb9b924d7ce3c220c30bd36907d)
----
- channels/rdpsnd/server/rdpsnd_main.c | 2 +-
- .../urbdrc/client/libusb/libusb_udevman.c | 2 +-
- channels/video/client/video_main.c | 4 +--
- client/Wayland/wlf_pointer.c | 4 +--
- client/X11/xf_gdi.c | 4 +--
- client/X11/xf_gfx.c | 4 +--
- client/X11/xf_graphics.c | 6 ++--
- client/X11/xf_rail.c | 4 +--
- libfreerdp/codec/clear.c | 4 +--
- libfreerdp/codec/color.c | 6 ++--
- libfreerdp/codec/h264.c | 6 ++--
- libfreerdp/codec/nsc_encode.c | 4 +--
- libfreerdp/codec/nsc_sse2.c | 4 +--
- libfreerdp/codec/progressive.c | 4 +--
- libfreerdp/core/gcc.c | 8 +++---
- libfreerdp/gdi/bitmap.c | 3 +-
- libfreerdp/gdi/gdi.c | 2 +-
- libfreerdp/gdi/gfx.c | 6 ++--
- libfreerdp/gdi/graphics.c | 2 +-
- libfreerdp/gdi/shape.c | 2 +-
- libfreerdp/gdi/video.c | 2 +-
- libfreerdp/primitives/prim_copy.c | 4 +--
- libfreerdp/primitives/primitives.c | 2 +-
- uwac/libuwac/uwac-window.c | 9 +++---
- winpr/include/winpr/print.h | 2 +-
- winpr/libwinpr/utils/lodepng/lodepng.c | 28 ++++++++++---------
- winpr/libwinpr/utils/print.c | 13 ++++-----
- 27 files changed, 72 insertions(+), 69 deletions(-)
-
-diff --git a/channels/rdpsnd/server/rdpsnd_main.c b/channels/rdpsnd/server/rdpsnd_main.c
-index cb9f5fe92..be0ca149f 100644
---- a/channels/rdpsnd/server/rdpsnd_main.c
-+++ b/channels/rdpsnd/server/rdpsnd_main.c
-@@ -422,7 +422,7 @@ static UINT rdpsnd_server_send_wave_pdu(RdpsndServerContext* context, UINT16 wTi
- Stream_Seek(s, 3); /* bPad */
- start = Stream_GetPosition(s);
- src = context->priv->out_buffer;
-- length = context->priv->out_pending_frames * context->priv->src_bytes_per_frame;
-+ length = context->priv->out_pending_frames * context->priv->src_bytes_per_frame * 1ULL;
-
- if (!freerdp_dsp_encode(context->priv->dsp_context, context->src_format, src, length, s))
- return ERROR_INTERNAL_ERROR;
-diff --git a/channels/urbdrc/client/libusb/libusb_udevman.c b/channels/urbdrc/client/libusb/libusb_udevman.c
-index ec7b0b322..1638b8c13 100644
---- a/channels/urbdrc/client/libusb/libusb_udevman.c
-+++ b/channels/urbdrc/client/libusb/libusb_udevman.c
-@@ -536,7 +536,7 @@ static BOOL device_is_filtered(struct libusb_device* dev,
-
- for (x = 0; x < config->bNumInterfaces; x++)
- {
-- uint8_t y;
-+ int y;
- const struct libusb_interface* ifc = &config->interface[x];
- for (y = 0; y < ifc->num_altsetting; y++)
- {
-diff --git a/channels/video/client/video_main.c b/channels/video/client/video_main.c
-index 10fb30d1a..a21e7cdf2 100644
---- a/channels/video/client/video_main.c
-+++ b/channels/video/client/video_main.c
-@@ -666,7 +666,7 @@ static void video_timer(VideoClientContext* video, UINT64 now)
- presentation = frame->presentation;
-
- priv->publishedFrames++;
-- memcpy(presentation->surfaceData, frame->surfaceData, frame->w * frame->h * 4);
-+ memcpy(presentation->surfaceData, frame->surfaceData, frame->w * frame->h * 4ULL);
-
- video->showSurface(video, presentation->surface);
-
-@@ -848,7 +848,7 @@ static UINT video_VideoData(VideoClientContext* context, TSMM_VIDEO_DATA* data)
- frame->w = presentation->SourceWidth;
- frame->h = presentation->SourceHeight;
-
-- frame->surfaceData = BufferPool_Take(priv->surfacePool, frame->w * frame->h * 4);
-+ frame->surfaceData = BufferPool_Take(priv->surfacePool, frame->w * frame->h * 4ULL);
- if (!frame->surfaceData)
- {
- WLog_ERR(TAG, "unable to allocate frame data");
-diff --git a/client/Wayland/wlf_pointer.c b/client/Wayland/wlf_pointer.c
-index 64166590c..decde7ff3 100644
---- a/client/Wayland/wlf_pointer.c
-+++ b/client/Wayland/wlf_pointer.c
-@@ -42,7 +42,7 @@ static BOOL wlf_Pointer_New(rdpContext* context, rdpPointer* pointer)
- if (!ptr)
- return FALSE;
-
-- ptr->size = pointer->width * pointer->height * 4;
-+ ptr->size = pointer->width * pointer->height * 4ULL;
- ptr->data = _aligned_malloc(ptr->size, 16);
-
- if (!ptr->data)
-@@ -92,7 +92,7 @@ static BOOL wlf_Pointer_Set(rdpContext* context, const rdpPointer* pointer)
- !wlf_scale_coordinates(context, &w, &h, FALSE))
- return FALSE;
-
-- size = w * h * 4;
-+ size = w * h * 4ULL;
- data = malloc(size);
-
- if (!data)
-diff --git a/client/X11/xf_gdi.c b/client/X11/xf_gdi.c
-index 949e62d12..4f52853bf 100644
---- a/client/X11/xf_gdi.c
-+++ b/client/X11/xf_gdi.c
-@@ -231,7 +231,7 @@ static Pixmap xf_brush_new(xfContext* xfc, UINT32 width, UINT32 height, UINT32 b
- if (data)
- {
- brushFormat = gdi_get_pixel_format(bpp);
-- cdata = (BYTE*)_aligned_malloc(width * height * 4, 16);
-+ cdata = (BYTE*)_aligned_malloc(width * height * 4ULL, 16);
- freerdp_image_copy(cdata, gdi->dstFormat, 0, 0, 0, width, height, data, brushFormat, 0, 0,
- 0, &xfc->context.gdi->palette, FREERDP_FLIP_NONE);
- image = XCreateImage(xfc->display, xfc->visual, xfc->depth, ZPixmap, 0, (char*)cdata, width,
-@@ -1066,7 +1066,7 @@ static BOOL xf_gdi_surface_bits(rdpContext* context, const SURFACE_BITS_COMMAND*
- case RDP_CODEC_ID_NONE:
- pSrcData = cmd->bmp.bitmapData;
- format = gdi_get_pixel_format(cmd->bmp.bpp);
-- size = cmd->bmp.width * cmd->bmp.height * GetBytesPerPixel(format);
-+ size = cmd->bmp.width * cmd->bmp.height * GetBytesPerPixel(format) * 1ULL;
- if (size > cmd->bmp.bitmapDataLength)
- {
- WLog_ERR(TAG, "Short nocodec message: got %" PRIu32 " bytes, require %" PRIuz,
-diff --git a/client/X11/xf_gfx.c b/client/X11/xf_gfx.c
-index cb3423ea0..97d3ad3cc 100644
---- a/client/X11/xf_gfx.c
-+++ b/client/X11/xf_gfx.c
-@@ -288,7 +288,7 @@ static UINT xf_CreateSurface(RdpgfxClientContext* context,
-
- surface->gdi.scanline = surface->gdi.width * GetBytesPerPixel(surface->gdi.format);
- surface->gdi.scanline = x11_pad_scanline(surface->gdi.scanline, xfc->scanline_pad);
-- size = surface->gdi.scanline * surface->gdi.height;
-+ size = surface->gdi.scanline * surface->gdi.height * 1ULL;
- surface->gdi.data = (BYTE*)_aligned_malloc(size, 16);
-
- if (!surface->gdi.data)
-@@ -312,7 +312,7 @@ static UINT xf_CreateSurface(RdpgfxClientContext* context,
- UINT32 bytes = GetBytesPerPixel(gdi->dstFormat);
- surface->stageScanline = width * bytes;
- surface->stageScanline = x11_pad_scanline(surface->stageScanline, xfc->scanline_pad);
-- size = surface->stageScanline * surface->gdi.height;
-+ size = surface->stageScanline * surface->gdi.height * 1ULL;
- surface->stage = (BYTE*)_aligned_malloc(size, 16);
-
- if (!surface->stage)
-diff --git a/client/X11/xf_graphics.c b/client/X11/xf_graphics.c
-index 1700092f8..8de32c557 100644
---- a/client/X11/xf_graphics.c
-+++ b/client/X11/xf_graphics.c
-@@ -125,7 +125,7 @@ static BOOL xf_Bitmap_New(rdpContext* context, rdpBitmap* bitmap)
-
- if ((INT64)depth != xfc->depth)
- {
-- if (!(data = _aligned_malloc(bitmap->width * bitmap->height * 4, 16)))
-+ if (!(data = _aligned_malloc(bitmap->width * bitmap->height * 4ULL, 16)))
- goto unlock;
-
- if (!freerdp_image_copy(data, gdi->dstFormat, 0, 0, 0, bitmap->width, bitmap->height,
-@@ -304,7 +304,7 @@ static BOOL _xf_Pointer_GetCursorForCurrentScale(rdpContext* context, const rdpP
- ci.height = yTargetSize;
- ci.xhot = pointer->xPos * xscale;
- ci.yhot = pointer->yPos * yscale;
-- size = ci.height * ci.width * GetBytesPerPixel(CursorFormat);
-+ size = ci.height * ci.width * GetBytesPerPixel(CursorFormat) * 1ULL;
-
- if (xscale != 1 || yscale != 1)
- {
-@@ -391,7 +391,7 @@ static BOOL xf_Pointer_New(rdpContext* context, rdpPointer* pointer)
- xpointer->nCursors = 0;
- xpointer->mCursors = 0;
-
-- size = pointer->height * pointer->width * GetBytesPerPixel(CursorFormat);
-+ size = pointer->height * pointer->width * GetBytesPerPixel(CursorFormat) * 1ULL;
-
- if (!(xpointer->cursorPixels = (XcursorPixel*)_aligned_malloc(size, 16)))
- return FALSE;
-diff --git a/client/X11/xf_rail.c b/client/X11/xf_rail.c
-index 59d30b355..770234f7d 100644
---- a/client/X11/xf_rail.c
-+++ b/client/X11/xf_rail.c
-@@ -532,7 +532,7 @@ static xfRailIconCache* RailIconCache_New(rdpSettings* settings)
-
- cache->numCaches = settings->RemoteAppNumIconCaches;
- cache->numCacheEntries = settings->RemoteAppNumIconCacheEntries;
-- cache->entries = calloc(cache->numCaches * cache->numCacheEntries, sizeof(xfRailIcon));
-+ cache->entries = calloc(cache->numCaches * cache->numCacheEntries * 1ULL, sizeof(xfRailIcon));
-
- if (!cache->entries)
- {
-@@ -602,7 +602,7 @@ static BOOL convert_rail_icon(const ICON_INFO* iconInfo, xfRailIcon* railIcon)
- long* pixels;
- int i;
- int nelements;
-- argbPixels = calloc(iconInfo->width * iconInfo->height, 4);
-+ argbPixels = calloc(iconInfo->width * iconInfo->height * 1ULL, 4);
-
- if (!argbPixels)
- goto error;
-diff --git a/libfreerdp/codec/clear.c b/libfreerdp/codec/clear.c
-index 083f1aa97..fadd98e67 100644
---- a/libfreerdp/codec/clear.c
-+++ b/libfreerdp/codec/clear.c
-@@ -566,7 +566,7 @@ static BOOL resize_vbar_entry(CLEAR_CONTEXT* clear, CLEAR_VBAR_ENTRY* vBarEntry)
- const UINT32 diffSize = (vBarEntry->count - vBarEntry->size) * bpp;
- BYTE* tmp;
- vBarEntry->size = vBarEntry->count;
-- tmp = (BYTE*)realloc(vBarEntry->pixels, vBarEntry->count * bpp);
-+ tmp = (BYTE*)realloc(vBarEntry->pixels, vBarEntry->count * bpp * 1ULL);
-
- if (!tmp)
- {
-@@ -980,7 +980,7 @@ static BOOL clear_decompress_glyph_data(CLEAR_CONTEXT* clear, wStream* s, UINT32
- if (glyphEntry->count > glyphEntry->size)
- {
- BYTE* tmp;
-- tmp = realloc(glyphEntry->pixels, glyphEntry->count * bpp);
-+ tmp = realloc(glyphEntry->pixels, glyphEntry->count * bpp * 1ULL);
-
- if (!tmp)
- {
-diff --git a/libfreerdp/codec/color.c b/libfreerdp/codec/color.c
-index a0fce37ef..edbfcd4ed 100644
---- a/libfreerdp/codec/color.c
-+++ b/libfreerdp/codec/color.c
-@@ -56,7 +56,7 @@ BYTE* freerdp_glyph_convert(UINT32 width, UINT32 height, const BYTE* data)
- * means of accessing individual pixels in blitting operations
- */
- scanline = (width + 7) / 8;
-- dstData = (BYTE*)_aligned_malloc(width * height, 16);
-+ dstData = (BYTE*)_aligned_malloc(width * height * 1ULL, 16);
-
- if (!dstData)
- return NULL;
-@@ -545,7 +545,7 @@ BOOL freerdp_image_copy_from_pointer_data(BYTE* pDstData, UINT32 DstFormat, UINT
- for (y = nYDst; y < nHeight; y++)
- {
- BYTE* pDstLine = &pDstData[y * nDstStep + nXDst * dstBytesPerPixel];
-- memset(pDstLine, 0, dstBytesPerPixel * (nWidth - nXDst));
-+ memset(pDstLine, 0, dstBytesPerPixel * (nWidth - nXDst) * 1ULL);
- }
-
- switch (xorBpp)
-@@ -742,7 +742,7 @@ BOOL freerdp_image_fill(BYTE* pDstData, DWORD DstFormat, UINT32 nDstStep, UINT32
- for (y = 1; y < nHeight; y++)
- {
- BYTE* pDstLine = &pDstData[(y + nYDst) * nDstStep + nXDst * bpp];
-- memcpy(pDstLine, pFirstDstLineXOffset, nWidth * bpp);
-+ memcpy(pDstLine, pFirstDstLineXOffset, nWidth * bpp * 1ULL);
- }
-
- return TRUE;
-diff --git a/libfreerdp/codec/h264.c b/libfreerdp/codec/h264.c
-index 8756c5838..00b812b29 100644
---- a/libfreerdp/codec/h264.c
-+++ b/libfreerdp/codec/h264.c
-@@ -63,9 +63,9 @@ BOOL avc420_ensure_buffer(H264_CONTEXT* h264, UINT32 stride, UINT32 width, UINT3
- _aligned_free(h264->pYUVData[0]);
- _aligned_free(h264->pYUVData[1]);
- _aligned_free(h264->pYUVData[2]);
-- h264->pYUVData[0] = _aligned_malloc(h264->iStride[0] * height, 16);
-- h264->pYUVData[1] = _aligned_malloc(h264->iStride[1] * height, 16);
-- h264->pYUVData[2] = _aligned_malloc(h264->iStride[2] * height, 16);
-+ h264->pYUVData[0] = _aligned_malloc(h264->iStride[0] * height * 1ULL, 16);
-+ h264->pYUVData[1] = _aligned_malloc(h264->iStride[1] * height * 1ULL, 16);
-+ h264->pYUVData[2] = _aligned_malloc(h264->iStride[2] * height * 1ULL, 16);
-
- if (!h264->pYUVData[0] || !h264->pYUVData[1] || !h264->pYUVData[2])
- return FALSE;
-diff --git a/libfreerdp/codec/nsc_encode.c b/libfreerdp/codec/nsc_encode.c
-index 501558c1c..fd9626a6d 100644
---- a/libfreerdp/codec/nsc_encode.c
-+++ b/libfreerdp/codec/nsc_encode.c
-@@ -273,8 +273,7 @@ static BOOL nsc_encode_argb_to_aycocg(NSC_CONTEXT* context, const BYTE* data, UI
-
- static BOOL nsc_encode_subsampling(NSC_CONTEXT* context)
- {
-- UINT16 x;
-- UINT16 y;
-+ UINT32 y;
- UINT32 tempWidth;
- UINT32 tempHeight;
-
-@@ -292,6 +291,7 @@ static BOOL nsc_encode_subsampling(NSC_CONTEXT* context)
-
- for (y = 0; y<tempHeight>> 1; y++)
- {
-+ UINT32 x;
- BYTE* co_dst = context->priv->PlaneBuffers[1] + y * (tempWidth >> 1);
- BYTE* cg_dst = context->priv->PlaneBuffers[2] + y * (tempWidth >> 1);
- const INT8* co_src0 = (INT8*)context->priv->PlaneBuffers[1] + (y << 1) * tempWidth;
-diff --git a/libfreerdp/codec/nsc_sse2.c b/libfreerdp/codec/nsc_sse2.c
-index 3e393c902..7f101652d 100644
---- a/libfreerdp/codec/nsc_sse2.c
-+++ b/libfreerdp/codec/nsc_sse2.c
-@@ -320,8 +320,7 @@ static BOOL nsc_encode_argb_to_aycocg_sse2(NSC_CONTEXT* context, const BYTE* dat
-
- static void nsc_encode_subsampling_sse2(NSC_CONTEXT* context)
- {
-- UINT16 x;
-- UINT16 y;
-+ UINT32 y;
- BYTE* co_dst;
- BYTE* cg_dst;
- INT8* co_src0;
-@@ -338,6 +337,7 @@ static void nsc_encode_subsampling_sse2(NSC_CONTEXT* context)
-
- for (y = 0; y<tempHeight>> 1; y++)
- {
-+ UINT32 x;
- co_dst = context->priv->PlaneBuffers[1] + y * (tempWidth >> 1);
- cg_dst = context->priv->PlaneBuffers[2] + y * (tempWidth >> 1);
- co_src0 = (INT8*)context->priv->PlaneBuffers[1] + (y << 1) * tempWidth;
-diff --git a/libfreerdp/codec/progressive.c b/libfreerdp/codec/progressive.c
-index 8ef0b9081..8e7a49d5f 100644
---- a/libfreerdp/codec/progressive.c
-+++ b/libfreerdp/codec/progressive.c
-@@ -411,7 +411,7 @@ static INLINE BOOL progressive_tile_allocate(RFX_PROGRESSIVE_TILE* tile)
- tile->stride = 4 * tile->width;
-
- {
-- size_t dataLen = tile->stride * tile->height;
-+ size_t dataLen = tile->stride * tile->height * 1ULL;
- tile->data = (BYTE*)_aligned_malloc(dataLen, 16);
- }
-
-@@ -2299,7 +2299,7 @@ INT32 progressive_decompress_ex(PROGRESSIVE_CONTEXT* progressive, const BYTE* pS
-
- for (i = 0; i < surface->numUpdatedTiles; i++)
- {
-- UINT32 nbUpdateRects;
-+ UINT32 nbUpdateRects, j;
- const RECTANGLE_16* updateRects;
- RECTANGLE_16 updateRect;
- RFX_PROGRESSIVE_TILE* tile = &surface->tiles[surface->updatedTileIndices[i]];
-diff --git a/libfreerdp/core/gcc.c b/libfreerdp/core/gcc.c
-index 06536dc06..52787ad70 100644
---- a/libfreerdp/core/gcc.c
-+++ b/libfreerdp/core/gcc.c
-@@ -35,8 +35,8 @@
-
- static BOOL gcc_read_client_cluster_data(wStream* s, rdpMcs* mcs, UINT16 blockLength);
- static BOOL gcc_read_client_core_data(wStream* s, rdpMcs* mcs, UINT16 blockLength);
--static BOOL gcc_read_client_data_blocks(wStream* s, rdpMcs* mcs, int length);
--static BOOL gcc_read_server_data_blocks(wStream* s, rdpMcs* mcs, int length);
-+static BOOL gcc_read_client_data_blocks(wStream* s, rdpMcs* mcs, UINT16 length);
-+static BOOL gcc_read_server_data_blocks(wStream* s, rdpMcs* mcs, UINT16 length);
- static BOOL gcc_read_user_data_header(wStream* s, UINT16* type, UINT16* length);
- static void gcc_write_user_data_header(wStream* s, UINT16 type, UINT16 length);
-
-@@ -379,7 +379,7 @@ void gcc_write_conference_create_response(wStream* s, wStream* userData)
- 0); /* array of server data blocks */
- }
-
--BOOL gcc_read_client_data_blocks(wStream* s, rdpMcs* mcs, int length)
-+BOOL gcc_read_client_data_blocks(wStream* s, rdpMcs* mcs, UINT16 length)
- {
- UINT16 type;
- UINT16 blockLength;
-@@ -518,7 +518,7 @@ BOOL gcc_write_client_data_blocks(wStream* s, rdpMcs* mcs)
- return TRUE;
- }
-
--BOOL gcc_read_server_data_blocks(wStream* s, rdpMcs* mcs, int length)
-+BOOL gcc_read_server_data_blocks(wStream* s, rdpMcs* mcs, UINT16 length)
- {
- UINT16 type;
- UINT16 offset = 0;
-diff --git a/libfreerdp/gdi/bitmap.c b/libfreerdp/gdi/bitmap.c
-index 902cb50a0..8fde46556 100644
---- a/libfreerdp/gdi/bitmap.c
-+++ b/libfreerdp/gdi/bitmap.c
-@@ -147,7 +147,8 @@ HGDI_BITMAP gdi_CreateCompatibleBitmap(HGDI_DC hdc, UINT32 nWidth, UINT32 nHeigh
- hBitmap->format = hdc->format;
- hBitmap->width = nWidth;
- hBitmap->height = nHeight;
-- hBitmap->data = _aligned_malloc(nWidth * nHeight * GetBytesPerPixel(hBitmap->format), 16);
-+ hBitmap->data =
-+ _aligned_malloc(nWidth * nHeight * GetBytesPerPixel(hBitmap->format) * 1ULL, 16);
- hBitmap->free = _aligned_free;
-
- if (!hBitmap->data)
-diff --git a/libfreerdp/gdi/gdi.c b/libfreerdp/gdi/gdi.c
-index b624e1174..5ca905b01 100644
---- a/libfreerdp/gdi/gdi.c
-+++ b/libfreerdp/gdi/gdi.c
-@@ -1057,7 +1057,7 @@ static BOOL gdi_surface_bits(rdpContext* context, const SURFACE_BITS_COMMAND* cm
-
- case RDP_CODEC_ID_NONE:
- format = gdi_get_pixel_format(cmd->bmp.bpp);
-- size = cmd->bmp.width * cmd->bmp.height * GetBytesPerPixel(format);
-+ size = cmd->bmp.width * cmd->bmp.height * GetBytesPerPixel(format) * 1ULL;
- if (size > cmd->bmp.bitmapDataLength)
- {
- WLog_ERR(TAG, "Short nocodec message: got %" PRIu32 " bytes, require %" PRIuz,
-diff --git a/libfreerdp/gdi/gfx.c b/libfreerdp/gdi/gfx.c
-index 2221cc3f7..a3b7505c5 100644
---- a/libfreerdp/gdi/gfx.c
-+++ b/libfreerdp/gdi/gfx.c
-@@ -726,7 +726,7 @@ static UINT gdi_SurfaceCommand_Alpha(rdpGdi* gdi, RdpgfxClientContext* context,
- {
- UINT32 x, y;
-
-- if (Stream_GetRemainingLength(&s) < cmd->height * cmd->width)
-+ if (Stream_GetRemainingLength(&s) < cmd->height * cmd->width * 1ULL)
- return ERROR_INVALID_DATA;
-
- for (y = cmd->top; y < cmd->top + cmd->height; y++)
-@@ -1024,8 +1024,8 @@ static UINT gdi_CreateSurface(RdpgfxClientContext* context,
- goto fail;
- }
-
-- surface->scanline = gfx_align_scanline(surface->width * 4, 16);
-- surface->data = (BYTE*)_aligned_malloc(surface->scanline * surface->height, 16);
-+ surface->scanline = gfx_align_scanline(surface->width * 4UL, 16);
-+ surface->data = (BYTE*)_aligned_malloc(surface->scanline * surface->height * 1ULL, 16);
-
- if (!surface->data)
- {
-diff --git a/libfreerdp/gdi/graphics.c b/libfreerdp/gdi/graphics.c
-index 3bcf3730d..c8b5fc913 100644
---- a/libfreerdp/gdi/graphics.c
-+++ b/libfreerdp/gdi/graphics.c
-@@ -52,7 +52,7 @@ HGDI_BITMAP gdi_create_bitmap(rdpGdi* gdi, UINT32 nWidth, UINT32 nHeight, UINT32
- return NULL;
-
- nDstStep = nWidth * GetBytesPerPixel(gdi->dstFormat);
-- pDstData = _aligned_malloc(nHeight * nDstStep, 16);
-+ pDstData = _aligned_malloc(nHeight * nDstStep * 1ULL, 16);
-
- if (!pDstData)
- return NULL;
-diff --git a/libfreerdp/gdi/shape.c b/libfreerdp/gdi/shape.c
-index 9d9ae4d80..6c45e0c92 100644
---- a/libfreerdp/gdi/shape.c
-+++ b/libfreerdp/gdi/shape.c
-@@ -158,7 +158,7 @@ BOOL gdi_FillRect(HGDI_DC hdc, const HGDI_RECT rect, HGDI_BRUSH hbr)
- for (y = 1; y < nHeight; y++)
- {
- BYTE* dstp = gdi_get_bitmap_pointer(hdc, nXDest, nYDest + y);
-- memcpy(dstp, srcp, nWidth * formatSize);
-+ memcpy(dstp, srcp, nWidth * formatSize * 1ULL);
- }
-
- break;
-diff --git a/libfreerdp/gdi/video.c b/libfreerdp/gdi/video.c
-index a543cbecb..0e12c52e7 100644
---- a/libfreerdp/gdi/video.c
-+++ b/libfreerdp/gdi/video.c
-@@ -66,7 +66,7 @@ static VideoSurface* gdiVideoCreateSurface(VideoClientContext* video, BYTE* data
- ret->base.w = width;
- ret->base.h = height;
- ret->scanline = width * bpp;
-- ret->image = _aligned_malloc(ret->scanline * height, 16);
-+ ret->image = _aligned_malloc(ret->scanline * height * 1ULL, 16);
-
- if (!ret->image)
- {
-diff --git a/libfreerdp/primitives/prim_copy.c b/libfreerdp/primitives/prim_copy.c
-index 03f1d7c8c..ae841d0c4 100644
---- a/libfreerdp/primitives/prim_copy.c
-+++ b/libfreerdp/primitives/prim_copy.c
-@@ -60,14 +60,14 @@ static BOOL memory_regions_overlap_2d(const BYTE* p1, int p1Step, int p1Size, co
-
- if (p1m <= p2m)
- {
-- ULONG_PTR p1mEnd = p1m + (height - 1) * p1Step + width * p1Size;
-+ ULONG_PTR p1mEnd = p1m + (height - 1) * p1Step * 1ULL + width * p1Size * 1ULL;
-
- if (p1mEnd > p2m)
- return TRUE;
- }
- else
- {
-- ULONG_PTR p2mEnd = p2m + (height - 1) * p2Step + width * p2Size;
-+ ULONG_PTR p2mEnd = p2m + (height - 1) * p2Step * 1ULL + width * p2Size * 1ULL;
-
- if (p2mEnd > p1m)
- return TRUE;
-diff --git a/libfreerdp/primitives/primitives.c b/libfreerdp/primitives/primitives.c
-index a1cd7ea85..26c6338f6 100644
---- a/libfreerdp/primitives/primitives.c
-+++ b/libfreerdp/primitives/primitives.c
-@@ -157,7 +157,7 @@ static primitives_YUV_benchmark* primitives_YUV_benchmark_init(primitives_YUV_be
- if (!buf)
- goto fail;
-
-- winpr_RAND(buf, roi->width * roi->height);
-+ winpr_RAND(buf, roi->width * roi->height * 1ULL);
- ret->steps[i] = roi->width;
- }
-
-diff --git a/uwac/libuwac/uwac-window.c b/uwac/libuwac/uwac-window.c
-index 13a2c2e78..bf70af2f1 100644
---- a/uwac/libuwac/uwac-window.c
-+++ b/uwac/libuwac/uwac-window.c
-@@ -316,14 +316,14 @@ int UwacWindowShmAllocBuffers(UwacWindow* w, int nbuffers, int allocSize, uint32
-
- w->buffers = newBuffers;
- memset(w->buffers + w->nbuffers, 0, sizeof(UwacBuffer) * nbuffers);
-- fd = uwac_create_anonymous_file(allocSize * nbuffers);
-+ fd = uwac_create_anonymous_file(allocSize * nbuffers * 1ULL);
-
- if (fd < 0)
- {
- return UWAC_ERROR_INTERNAL;
- }
-
-- data = mmap(NULL, allocSize * nbuffers, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
-+ data = mmap(NULL, allocSize * nbuffers * 1ULL, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
-
- if (data == MAP_FAILED)
- {
-@@ -335,7 +335,7 @@ int UwacWindowShmAllocBuffers(UwacWindow* w, int nbuffers, int allocSize, uint32
-
- if (!pool)
- {
-- munmap(data, allocSize * nbuffers);
-+ munmap(data, allocSize * nbuffers * 1ULL);
- ret = UWAC_ERROR_NOMEMORY;
- goto error_mmap;
- }
-@@ -755,7 +755,8 @@ UwacReturnCode UwacWindowSubmitBuffer(UwacWindow* window, bool copyContentForNex
- return UWAC_ERROR_NOMEMORY;
-
- if (copyContentForNextFrame)
-- memcpy(nextDrawingBuffer->data, pendingBuffer->data, window->stride * window->height);
-+ memcpy(nextDrawingBuffer->data, pendingBuffer->data,
-+ window->stride * window->height * 1ULL);
-
- UwacSubmitBufferPtr(window, pendingBuffer);
- return UWAC_SUCCESS;
-diff --git a/winpr/include/winpr/print.h b/winpr/include/winpr/print.h
-index 5adf0c445..d75ffdba5 100644
---- a/winpr/include/winpr/print.h
-+++ b/winpr/include/winpr/print.h
-@@ -40,7 +40,7 @@ extern "C"
- WINPR_API void winpr_CArrayDump(const char* tag, UINT32 lvl, const BYTE* data, int length,
- int width);
-
-- WINPR_API char* winpr_BinToHexString(const BYTE* data, int length, BOOL space);
-+ WINPR_API char* winpr_BinToHexString(const BYTE* data, size_t length, BOOL space);
-
- WINPR_API int wprintfx(const char* fmt, ...);
- WINPR_API int wvprintfx(const char* fmt, va_list args);
-diff --git a/winpr/libwinpr/utils/lodepng/lodepng.c b/winpr/libwinpr/utils/lodepng/lodepng.c
-index 87f85080e..89878e074 100644
---- a/winpr/libwinpr/utils/lodepng/lodepng.c
-+++ b/winpr/libwinpr/utils/lodepng/lodepng.c
-@@ -3026,7 +3026,7 @@ size_t lodepng_get_raw_size(unsigned w, unsigned h, const LodePNGColorMode* colo
- /*in an idat chunk, each scanline is a multiple of 8 bits, unlike the lodepng output buffer*/
- static size_t lodepng_get_raw_size_idat(unsigned w, unsigned h, const LodePNGColorMode* color)
- {
-- return h * ((w * lodepng_get_bpp(color) + 7) / 8);
-+ return h * ((w * lodepng_get_bpp(color) + 7ULL) / 8ULL);
- }
- #endif /*LODEPNG_COMPILE_DECODER*/
- #endif /*LODEPNG_COMPILE_PNG*/
-@@ -3814,7 +3814,7 @@ unsigned lodepng_convert(unsigned char* out, const unsigned char* in, LodePNGCol
- {
- size_t i;
- ColorTree tree;
-- size_t numpixels = w * h;
-+ size_t numpixels = w * h * 1ULL;
-
- if (lodepng_color_mode_equal(mode_out, mode_in))
- {
-@@ -3917,7 +3917,7 @@ unsigned get_color_profile(LodePNGColorProfile* profile, const unsigned char* in
- unsigned error = 0;
- size_t i;
- ColorTree tree;
-- size_t numpixels = w * h;
-+ size_t numpixels = w * h * 1ULL;
-
- unsigned colored_done = lodepng_is_greyscale_type(mode) ? 1 : 0;
- unsigned alpha_done = lodepng_can_have_alpha(mode) ? 0 : 1;
-@@ -4223,11 +4223,11 @@ static void Adam7_getpassvalues(unsigned passw[7], unsigned passh[7], size_t fil
- /*if passw[i] is 0, it's 0 bytes, not 1 (no filtertype-byte)*/
- filter_passstart[i + 1] =
- filter_passstart[i] +
-- ((passw[i] && passh[i]) ? passh[i] * (1 + (passw[i] * bpp + 7) / 8) : 0);
-+ ((passw[i] && passh[i]) ? passh[i] * (1ULL + (passw[i] * bpp + 7ULL) / 8ULL) : 0);
- /*bits padded if needed to fill full byte at end of each scanline*/
-- padded_passstart[i + 1] = padded_passstart[i] + passh[i] * ((passw[i] * bpp + 7) / 8);
-+ padded_passstart[i + 1] = padded_passstart[i] + passh[i] * ((passw[i] * bpp + 7ULL) / 8ULL);
- /*only padded at end of reduced image*/
-- passstart[i + 1] = passstart[i] + (passh[i] * passw[i] * bpp + 7) / 8;
-+ passstart[i + 1] = passstart[i] + (passh[i] * passw[i] * bpp + 7ULL) / 8ULL;
- }
- }
-
-@@ -4538,7 +4538,7 @@ static unsigned postProcessScanlines(unsigned char* out, unsigned char* in, unsi
- if (bpp < 8 && w * bpp != ((w * bpp + 7) / 8) * 8)
- {
- CERROR_TRY_RETURN(unfilter(in, in, w, h, bpp));
-- removePaddingBits(out, in, w * bpp, ((w * bpp + 7) / 8) * 8, h);
-+ removePaddingBits(out, in, w * bpp * 1ULL, ((w * bpp + 7ULL) / 8ULL) * 8ULL, h);
- }
- /*we can immediatly filter into the out buffer, no other steps needed*/
- else
-@@ -4563,8 +4563,9 @@ static unsigned postProcessScanlines(unsigned char* out, unsigned char* in, unsi
- /*remove padding bits in scanlines; after this there still may be padding
- bits between the different reduced images: each reduced image still starts nicely at
- a byte*/
-- removePaddingBits(&in[passstart[i]], &in[padded_passstart[i]], passw[i] * bpp,
-- ((passw[i] * bpp + 7) / 8) * 8, passh[i]);
-+ removePaddingBits(&in[passstart[i]], &in[padded_passstart[i]],
-+ passw[i] * bpp * 1ULL, ((passw[i] * bpp + 7ULL) / 8ULL) * 8ULL,
-+ passh[i]);
- }
- }
-
-@@ -6049,12 +6050,12 @@ static unsigned preProcessScanlines(unsigned char** out, size_t* outsize, const
- /*non multiple of 8 bits per scanline, padding bits needed per scanline*/
- if (bpp < 8 && w * bpp != ((w * bpp + 7) / 8) * 8)
- {
-- unsigned char* padded = (unsigned char*)calloc(h * ((w * bpp + 7) / 8), 1);
-+ unsigned char* padded = (unsigned char*)calloc(h * ((w * bpp + 7ULL) / 8ULL), 1);
- if (!padded)
- error = 83; /*alloc fail*/
- if (!error)
- {
-- addPaddingBits(padded, in, ((w * bpp + 7) / 8) * 8, w * bpp, h);
-+ addPaddingBits(padded, in, ((w * bpp + 7ULL) / 8ULL) * 8ULL, w * bpp * 1ULL, h);
- error = filter(*out, padded, w, h, &info_png->color, settings);
- }
- free(padded);
-@@ -6097,8 +6098,9 @@ static unsigned preProcessScanlines(unsigned char** out, size_t* outsize, const
- padded_passstart[i + 1] - padded_passstart[i], sizeof(unsigned char));
- if (!padded)
- ERROR_BREAK(83); /*alloc fail*/
-- addPaddingBits(padded, &adam7[passstart[i]], ((passw[i] * bpp + 7) / 8) * 8,
-- passw[i] * bpp, passh[i]);
-+ addPaddingBits(padded, &adam7[passstart[i]],
-+ ((passw[i] * bpp + 7ULL) / 8ULL) * 8ULL, passw[i] * bpp * 1ULL,
-+ passh[i] * 1ULL);
- error = filter(&(*out)[filter_passstart[i]], padded, passw[i], passh[i],
- &info_png->color, settings);
- free(padded);
-diff --git a/winpr/libwinpr/utils/print.c b/winpr/libwinpr/utils/print.c
-index c56cf5f6f..e3257b146 100644
---- a/winpr/libwinpr/utils/print.c
-+++ b/winpr/libwinpr/utils/print.c
-@@ -158,23 +158,22 @@ void winpr_CArrayDump(const char* tag, UINT32 level, const BYTE* data, int lengt
- free(buffer);
- }
-
--char* winpr_BinToHexString(const BYTE* data, int length, BOOL space)
-+char* winpr_BinToHexString(const BYTE* data, size_t length, BOOL space)
- {
-- int i;
-+ size_t i;
- int n;
- char* p;
-- int ln, hn;
-- char bin2hex[] = "0123456789ABCDEF";
-+ const char bin2hex[] = "0123456789ABCDEF";
- n = space ? 3 : 2;
-- p = (char*)malloc((length + 1) * n);
-+ p = (char*)malloc((length + 1ULL) * n);
-
- if (!p)
- return NULL;
-
- for (i = 0; i < length; i++)
- {
-- ln = data[i] & 0xF;
-- hn = (data[i] >> 4) & 0xF;
-+ int ln = data[i] & 0xF;
-+ int hn = (data[i] >> 4) & 0xF;
- p[i * n] = bin2hex[hn];
- p[(i * n) + 1] = bin2hex[ln];
-
---
-2.30.2
-
diff --git a/debian/patches/0033-Reverted-winpr_BinToHexString-argument-change.patch b/debian/patches/0033-Reverted-winpr_BinToHexString-argument-change.patch
deleted file mode 100644
index f3e09f6..0000000
--- a/debian/patches/0033-Reverted-winpr_BinToHexString-argument-change.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From bed161ce5081b1aae422beef9ca5722eba022280 Mon Sep 17 00:00:00 2001
-From: Armin Novak <armin.novak@thincast.com>
-Date: Fri, 12 Mar 2021 12:24:42 +0100
-Subject: [PATCH 33/36] Reverted winpr_BinToHexString argument change
-
-keep API compatible.
----
- winpr/include/winpr/print.h | 2 +-
- winpr/libwinpr/utils/print.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/winpr/include/winpr/print.h b/winpr/include/winpr/print.h
-index d75ffdba5..5adf0c445 100644
---- a/winpr/include/winpr/print.h
-+++ b/winpr/include/winpr/print.h
-@@ -40,7 +40,7 @@ extern "C"
- WINPR_API void winpr_CArrayDump(const char* tag, UINT32 lvl, const BYTE* data, int length,
- int width);
-
-- WINPR_API char* winpr_BinToHexString(const BYTE* data, size_t length, BOOL space);
-+ WINPR_API char* winpr_BinToHexString(const BYTE* data, int length, BOOL space);
-
- WINPR_API int wprintfx(const char* fmt, ...);
- WINPR_API int wvprintfx(const char* fmt, va_list args);
-diff --git a/winpr/libwinpr/utils/print.c b/winpr/libwinpr/utils/print.c
-index e3257b146..1ab074a1c 100644
---- a/winpr/libwinpr/utils/print.c
-+++ b/winpr/libwinpr/utils/print.c
-@@ -158,7 +158,7 @@ void winpr_CArrayDump(const char* tag, UINT32 level, const BYTE* data, int lengt
- free(buffer);
- }
-
--char* winpr_BinToHexString(const BYTE* data, size_t length, BOOL space)
-+char* winpr_BinToHexString(const BYTE* data, int length, BOOL space)
- {
- size_t i;
- int n;
---
-2.30.2
-
diff --git a/debian/patches/0034-Fixed-6938-Remote-app-mode-clipboard-fix.patch b/debian/patches/0034-Fixed-6938-Remote-app-mode-clipboard-fix.patch
deleted file mode 100644
index 113fc74..0000000
--- a/debian/patches/0034-Fixed-6938-Remote-app-mode-clipboard-fix.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From f3aa8251145fe1bd917aebd3b9e0ab65d396e78e Mon Sep 17 00:00:00 2001
-From: akallabeth <akallabeth@posteo.net>
-Date: Fri, 16 Apr 2021 10:50:08 +0200
-Subject: [PATCH] Fixed #6938: Remote app mode clipboard fix
-
-In remote app mode the _FREERDP_TIMESTAMP_PROPERTY does not work.
-Therefore ignore it
-
-(cherry picked from commit f2254f0b09a5fbc424ef3876cb47b03d83963c38)
----
- client/X11/xf_cliprdr.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/client/X11/xf_cliprdr.c b/client/X11/xf_cliprdr.c
-index 0e6cd036f..4b22edd38 100644
---- a/client/X11/xf_cliprdr.c
-+++ b/client/X11/xf_cliprdr.c
-@@ -1423,7 +1423,10 @@ static UINT xf_cliprdr_server_format_list(CliprdrClientContext* context,
- }
-
- ret = xf_cliprdr_send_client_format_list_response(clipboard, TRUE);
-- xf_cliprdr_prepare_to_set_selection_owner(xfc, clipboard);
-+ if (xfc->remote_app)
-+ xf_cliprdr_set_selection_owner(xfc, clipboard, CurrentTime);
-+ else
-+ xf_cliprdr_prepare_to_set_selection_owner(xfc, clipboard);
- return ret;
- }
-
---
-2.30.2
-
diff --git a/debian/patches/0035-Fixed-6989-Use-X509_STORE_set_default_paths.patch b/debian/patches/0035-Fixed-6989-Use-X509_STORE_set_default_paths.patch
deleted file mode 100644
index 7f46fa2..0000000
--- a/debian/patches/0035-Fixed-6989-Use-X509_STORE_set_default_paths.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From eaadeff1fc529f73d01a2a9699f840171c654e38 Mon Sep 17 00:00:00 2001
-From: akallabeth <akallabeth@posteo.net>
-Date: Mon, 3 May 2021 08:27:31 +0200
-Subject: [PATCH] Fixed #6989: Use X509_STORE_set_default_paths
-
-(cherry picked from commit b528ecde4f68d297b8464855a7ae0e02d36b78fc)
----
- libfreerdp/crypto/crypto.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/libfreerdp/crypto/crypto.c b/libfreerdp/crypto/crypto.c
-index e61bd3bf1..82df956c2 100644
---- a/libfreerdp/crypto/crypto.c
-+++ b/libfreerdp/crypto/crypto.c
-@@ -846,9 +846,7 @@ BOOL x509_verify_certificate(CryptoCert cert, const char* certificate_store_path
- NULL);
- #endif
-
-- lookup = X509_STORE_add_lookup(cert_ctx, X509_LOOKUP_file());
--
-- if (lookup == NULL)
-+ if (X509_STORE_set_default_paths(cert_ctx) != 1)
- goto end;
-
- lookup = X509_STORE_add_lookup(cert_ctx, X509_LOOKUP_hash_dir());
---
-2.30.2
-
diff --git a/debian/patches/2001-fake-git-revision.patch b/debian/patches/2001-fake-git-revision.patch
deleted file mode 100644
index 3b89028..0000000
--- a/debian/patches/2001-fake-git-revision.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Description: avoid Git interaction during build
-Author: Konstantin Demin <rockdrilla@gmail.com>
-
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -143,25 +143,13 @@ if(CCACHE AND WITH_CCACHE)
- endif()
- endif(CCACHE AND WITH_CCACHE)
-
--if(EXISTS "${CMAKE_SOURCE_DIR}/.source_version" )
-- file(READ ${CMAKE_SOURCE_DIR}/.source_version GIT_REVISION)
--
-- string(STRIP ${GIT_REVISION} GIT_REVISION)
--else()
-- git_get_exact_tag(GIT_REVISION --tags --always)
--
-- if (${GIT_REVISION} STREQUAL "n/a")
-- git_rev_parse (GIT_REVISION --short)
-- endif()
--endif()
-+set(GIT_REVISION "${FREERDP_VERSION}")
-
- if(CMAKE_CROSSCOMPILING)
- SET (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
- endif(CMAKE_CROSSCOMPILING)
- # /Allow to search the host machine for git/ccache
-
--message(STATUS "Git Revision ${GIT_REVISION}")
--
- # Turn on solution folders (2.8.4+)
- set_property(GLOBAL PROPERTY USE_FOLDERS ON)
-
diff --git a/debian/patches/series b/debian/patches/series
index 9edc801..e69de29 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,24 +0,0 @@
-2001-fake-git-revision.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
-0034-Fixed-6938-Remote-app-mode-clipboard-fix.patch
-0035-Fixed-6989-Use-X509_STORE_set_default_paths.patch