commit:     ce00779b11562ced94ae12e97007830e32cac4f6
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Tue Jul 23 14:23:26 2024 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Tue Jul 23 14:23:26 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ce00779b

net-misc/freerdp: backport build fix

Closes: https://bugs.gentoo.org/963406
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>

 .../freerdp/files/freerdp-3.6.3-backports.patch    | 224 +++++++++++++++++++++
 net-misc/freerdp/freerdp-3.6.3.ebuild              |   4 +
 2 files changed, 228 insertions(+)

diff --git a/net-misc/freerdp/files/freerdp-3.6.3-backports.patch 
b/net-misc/freerdp/files/freerdp-3.6.3-backports.patch
new file mode 100644
index 000000000000..473b27cbab02
--- /dev/null
+++ b/net-misc/freerdp/files/freerdp-3.6.3-backports.patch
@@ -0,0 +1,224 @@
+https://bugs.gentoo.org/936406
+https://github.com/FreeRDP/FreeRDP/pull/10410
+
+From 776083234b61224f8e3412c31be406b11509b7db Mon Sep 17 00:00:00 2001
+From: akallabeth <[email protected]>
+Date: Tue, 23 Jul 2024 09:14:04 +0200
+Subject: [PATCH 1/2] [warnings] fix unused-but-set-variable
+
+---
+ channels/parallel/client/parallel_main.c | 4 ++++
+ channels/printer/client/printer_main.c   | 2 ++
+ channels/serial/client/serial_main.c     | 4 ++++
+ channels/tsmf/client/tsmf_media.c        | 2 +-
+ channels/urbdrc/client/data_transfer.c   | 3 +--
+ libfreerdp/core/gateway/tsg.c            | 3 +--
+ libfreerdp/core/heartbeat.c              | 3 +--
+ libfreerdp/gdi/gfx.c                     | 7 ++-----
+ winpr/libwinpr/ncrypt/ncrypt_pkcs11.c    | 3 ---
+ 9 files changed, 16 insertions(+), 15 deletions(-)
+
+diff --git a/channels/parallel/client/parallel_main.c 
b/channels/parallel/client/parallel_main.c
+index ce574b87b084..4be078693870 100644
+--- a/channels/parallel/client/parallel_main.c
++++ b/channels/parallel/client/parallel_main.c
+@@ -160,6 +160,8 @@ static UINT parallel_process_irp_read(PARALLEL_DEVICE* 
parallel, IRP* irp)
+               return ERROR_INVALID_DATA;
+       Stream_Read_UINT32(irp->input, Length);
+       Stream_Read_UINT64(irp->input, Offset);
++      (void)Offset; /* [MS-RDPESP] 3.2.5.1.4 Processing a Server Read Request 
Message
++                     * ignored */
+       buffer = (BYTE*)calloc(Length, sizeof(BYTE));
+ 
+       if (!buffer)
+@@ -220,6 +222,8 @@ static UINT parallel_process_irp_write(PARALLEL_DEVICE* 
parallel, IRP* irp)
+ 
+       Stream_Read_UINT32(irp->input, Length);
+       Stream_Read_UINT64(irp->input, Offset);
++      (void)Offset; /* [MS-RDPESP] 3.2.5.1.5 Processing a Server Write 
Request Message
++                     * ignore offset */
+       if (!Stream_SafeSeek(irp->input, 20)) /* Padding */
+               return ERROR_INVALID_DATA;
+       const void* ptr = Stream_ConstPointer(irp->input);
+diff --git a/channels/printer/client/printer_main.c 
b/channels/printer/client/printer_main.c
+index 8d11f9b5ccd3..c458c0fdcfca 100644
+--- a/channels/printer/client/printer_main.c
++++ b/channels/printer/client/printer_main.c
+@@ -515,6 +515,8 @@ static UINT printer_process_irp_write(PRINTER_DEVICE* 
printer_dev, IRP* irp)
+               return ERROR_INVALID_DATA;
+       Stream_Read_UINT32(irp->input, Length);
+       Stream_Read_UINT64(irp->input, Offset);
++      (void)Offset; /* [MS-RDPEPC] 2.2.2.9 Server Printer Write Request 
(DR_PRN_WRITE_REQ)
++                     * reserved for future use, ignore */
+       Stream_Seek(irp->input, 20); /* Padding */
+       const void* ptr = Stream_ConstPointer(irp->input);
+       if (!Stream_SafeSeek(irp->input, Length))
+diff --git a/channels/serial/client/serial_main.c 
b/channels/serial/client/serial_main.c
+index 22f799a16ba6..c98a27ea9040 100644
+--- a/channels/serial/client/serial_main.c
++++ b/channels/serial/client/serial_main.c
+@@ -241,6 +241,8 @@ static UINT serial_process_irp_read(SERIAL_DEVICE* serial, 
IRP* irp)
+ 
+       Stream_Read_UINT32(irp->input, Length); /* Length (4 bytes) */
+       Stream_Read_UINT64(irp->input, Offset); /* Offset (8 bytes) */
++      (void)Offset; /* [MS-RDPESP] 3.2.5.1.4 Processing a Server Read Request 
Message
++                     * ignored */
+       Stream_Seek(irp->input, 20);            /* Padding (20 bytes) */
+       buffer = (BYTE*)calloc(Length, sizeof(BYTE));
+ 
+@@ -301,6 +303,8 @@ static UINT serial_process_irp_write(SERIAL_DEVICE* 
serial, IRP* irp)
+ 
+       Stream_Read_UINT32(irp->input, Length); /* Length (4 bytes) */
+       Stream_Read_UINT64(irp->input, Offset); /* Offset (8 bytes) */
++      (void)Offset; /* [MS-RDPESP] 3.2.5.1.4 Processing a Server Read Request 
Message
++                     * ignored */
+       if (!Stream_SafeSeek(irp->input, 20))   /* Padding (20 bytes) */
+               return ERROR_INVALID_DATA;
+ 
+diff --git a/channels/tsmf/client/tsmf_media.c 
b/channels/tsmf/client/tsmf_media.c
+index 5f47090ae37b..b20db415944d 100644
+--- a/channels/tsmf/client/tsmf_media.c
++++ b/channels/tsmf/client/tsmf_media.c
+@@ -1161,7 +1161,7 @@ BOOL tsmf_stream_flush(TSMF_STREAM* stream)
+               stream->presentation->audio_end_time = 0;
+       }
+ 
+-      return TRUE;
++      return ret;
+ }
+ 
+ void _tsmf_presentation_free(void* obj)
+diff --git a/channels/urbdrc/client/data_transfer.c 
b/channels/urbdrc/client/data_transfer.c
+index 56f3267ccc35..5f9a6e0e479e 100644
+--- a/channels/urbdrc/client/data_transfer.c
++++ b/channels/urbdrc/client/data_transfer.c
+@@ -1038,7 +1038,6 @@ static UINT 
urb_control_vendor_or_class_request(IUDEVICE* pdev, GENERIC_CHANNEL_
+       BYTE bmRequestType = 0;
+       UINT16 Value = 0;
+       UINT16 Index = 0;
+-      UINT16 Padding = 0;
+       wStream* out = NULL;
+       URBDRC_PLUGIN* urbdrc = NULL;
+       const BOOL noAck = (RequestField & 0x80000000U) != 0;
+@@ -1061,7 +1060,7 @@ static UINT 
urb_control_vendor_or_class_request(IUDEVICE* pdev, GENERIC_CHANNEL_
+       Stream_Read_UINT8(s, Request);             /** Request */
+       Stream_Read_UINT16(s, Value);              /** value */
+       Stream_Read_UINT16(s, Index);              /** index */
+-      Stream_Read_UINT16(s, Padding);            /** Padding */
++      Stream_Seek_UINT16(s);                     /** Padding */
+       Stream_Read_UINT32(s, OutputBufferSize);
+       if (OutputBufferSize > UINT32_MAX - 36)
+               return ERROR_INVALID_DATA;
+diff --git a/libfreerdp/core/gateway/tsg.c b/libfreerdp/core/gateway/tsg.c
+index fdd01089810a..60ccdc5a63c6 100644
+--- a/libfreerdp/core/gateway/tsg.c
++++ b/libfreerdp/core/gateway/tsg.c
+@@ -693,14 +693,13 @@ static BOOL tsg_ndr_read_packet_response(wLog* log, 
wStream* s, UINT32* index,
+       UINT32 MaxSizeValue = 0;
+       UINT32 MaxOffsetValue = 0;
+       UINT32 idleTimeout = 0;
+-      UINT32 reserved = 0;
+ 
+       WINPR_ASSERT(response);
+ 
+       if (!Stream_CheckAndLogRequiredLengthOfSizeWLog(log, s, 2, 
sizeof(UINT32)))
+               return FALSE;
+       Stream_Read_UINT32(s, response->flags); /* Flags (4 bytes) */
+-      Stream_Read_UINT32(s, reserved);        /* Reserved (4 bytes) */
++      Stream_Seek_UINT32(s);                  /* Reserved (4 bytes) */
+ 
+       if (response->flags != TSG_PACKET_TYPE_QUARREQUEST)
+       {
+diff --git a/libfreerdp/core/heartbeat.c b/libfreerdp/core/heartbeat.c
+index 1fb608962f0a..6a77bd562ceb 100644
+--- a/libfreerdp/core/heartbeat.c
++++ b/libfreerdp/core/heartbeat.c
+@@ -25,7 +25,6 @@
+ 
+ state_run_t rdp_recv_heartbeat_packet(rdpRdp* rdp, wStream* s)
+ {
+-      BYTE reserved = 0;
+       BYTE period = 0;
+       BYTE count1 = 0;
+       BYTE count2 = 0;
+@@ -38,7 +37,7 @@ state_run_t rdp_recv_heartbeat_packet(rdpRdp* rdp, wStream* 
s)
+       if (!Stream_CheckAndLogRequiredLength(AUTODETECT_TAG, s, 4))
+               return STATE_RUN_FAILED;
+ 
+-      Stream_Read_UINT8(s, reserved); /* reserved (1 byte) */
++      Stream_Seek_UINT8(s);           /* reserved (1 byte) */
+       Stream_Read_UINT8(s, period);   /* period (1 byte) */
+       Stream_Read_UINT8(s, count1);   /* count1 (1 byte) */
+       Stream_Read_UINT8(s, count2);   /* count2 (1 byte) */
+diff --git a/libfreerdp/gdi/gfx.c b/libfreerdp/gdi/gfx.c
+index c9016a995e6b..59c7a377f8db 100644
+--- a/libfreerdp/gdi/gfx.c
++++ b/libfreerdp/gdi/gfx.c
+@@ -1855,14 +1855,11 @@ BOOL gdi_graphics_pipeline_init_ex(rdpGdi* gdi, 
RdpgfxClientContext* gfx,
+                                    pcRdpgfxUnmapWindowForSurface unmap,
+                                    pcRdpgfxUpdateSurfaceArea update)
+ {
+-      rdpContext* context = NULL;
+-      const rdpSettings* settings = NULL;
+-
+       if (!gdi || !gfx || !gdi->context || !gdi->context->settings)
+               return FALSE;
+ 
+-      context = gdi->context;
+-      settings = gdi->context->settings;
++      rdpContext* context = gdi->context;
++      rdpSettings* settings = context->settings;
+ 
+       gdi->gfx = gfx;
+       gfx->custom = (void*)gdi;
+diff --git a/winpr/libwinpr/ncrypt/ncrypt_pkcs11.c 
b/winpr/libwinpr/ncrypt/ncrypt_pkcs11.c
+index 5f0a80262a30..74ee99ec3a2c 100644
+--- a/winpr/libwinpr/ncrypt/ncrypt_pkcs11.c
++++ b/winpr/libwinpr/ncrypt/ncrypt_pkcs11.c
+@@ -356,7 +356,6 @@ static void log_(const char* tag, const char* msg, CK_RV 
rv, CK_ULONG index, CK_
+ static SECURITY_STATUS collect_keys(NCryptP11ProviderHandle* provider, 
P11EnumKeysState* state)
+ {
+       CK_OBJECT_HANDLE slotObjects[MAX_KEYS_PER_SLOT] = { 0 };
+-      const char* step = NULL;
+ 
+       WINPR_ASSERT(provider);
+ 
+@@ -418,7 +417,6 @@ static SECURITY_STATUS 
collect_keys(NCryptP11ProviderHandle* provider, P11EnumKe
+               {
+                       // TODO: shall it be fatal ?
+                       loge(TAG, "unable to initiate search", rv, i, 
state->slots[i]);
+-                      step = "C_FindObjectsInit";
+                       goto cleanup_FindObjectsInit;
+               }
+ 
+@@ -428,7 +426,6 @@ static SECURITY_STATUS 
collect_keys(NCryptP11ProviderHandle* provider, P11EnumKe
+               if (rv != CKR_OK)
+               {
+                       loge(TAG, "unable to findObjects", rv, i, 
state->slots[i]);
+-                      step = "C_FindObjects";
+                       goto cleanup_FindObjects;
+               }
+ 
+
+From f22974a95a6b2d647174f4195f2ba4789105afaa Mon Sep 17 00:00:00 2001
+From: akallabeth <[email protected]>
+Date: Tue, 23 Jul 2024 09:15:00 +0200
+Subject: [PATCH 2/2] [winpr,utils] include current source dir
+
+---
+ winpr/libwinpr/utils/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/winpr/libwinpr/utils/CMakeLists.txt 
b/winpr/libwinpr/utils/CMakeLists.txt
+index 2c5efb3295a5..6bf40e77b1a6 100644
+--- a/winpr/libwinpr/utils/CMakeLists.txt
++++ b/winpr/libwinpr/utils/CMakeLists.txt
+@@ -18,7 +18,7 @@
+ include(CheckFunctionExists)
+ include(CMakeDependentOption)
+ 
+-set(CMAKE_INCLUDE_CURRENT_DIR ON)
++winpr_include_directory_add(${CMAKE_CURRENT_SOURCE_DIR})
+ 
+ option(WITH_LODEPNG "build WinPR with PNG support" OFF)
+ if (WITH_LODEPNG)

diff --git a/net-misc/freerdp/freerdp-3.6.3.ebuild 
b/net-misc/freerdp/freerdp-3.6.3.ebuild
index 54782cebb998..2603e73e7407 100644
--- a/net-misc/freerdp/freerdp-3.6.3.ebuild
+++ b/net-misc/freerdp/freerdp-3.6.3.ebuild
@@ -108,6 +108,10 @@ RDEPEND="${COMMON_DEPEND}
        smartcard? ( app-crypt/p11-kit )
 "
 
+PATCHES=(
+       "${FILESDIR}/freerdp-3.6.3-backports.patch"
+)
+
 option() {
        usex "$1" ON OFF
 }

Reply via email to