Update to 2.6.1
This commit is contained in:
parent
a957eed4f4
commit
3a62f0cfae
1
.gitignore
vendored
1
.gitignore
vendored
@ -52,3 +52,4 @@
|
|||||||
/FreeRDP-2.4.0.tar.gz
|
/FreeRDP-2.4.0.tar.gz
|
||||||
/FreeRDP-2.4.1.tar.gz
|
/FreeRDP-2.4.1.tar.gz
|
||||||
/FreeRDP-2.5.0.tar.gz
|
/FreeRDP-2.5.0.tar.gz
|
||||||
|
/FreeRDP-2.6.1.tar.gz
|
||||||
|
121
Added-more-log-messages-for-SurfaceCommand-failures.patch
Normal file
121
Added-more-log-messages-for-SurfaceCommand-failures.patch
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
From 631e71bebd041fbac2932555f17de050f6def91f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Armin Novak <armin.novak@thincast.com>
|
||||||
|
Date: Tue, 8 Mar 2022 15:01:09 +0100
|
||||||
|
Subject: [PATCH] Added more log messages for SurfaceCommand failures
|
||||||
|
|
||||||
|
(cherry picked from commit c6f204091291990f85c23450778fcab35571eed5)
|
||||||
|
---
|
||||||
|
libfreerdp/core/surface.c | 40 ++++++++++++++++++++++++++++++++++++---
|
||||||
|
1 file changed, 37 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libfreerdp/core/surface.c b/libfreerdp/core/surface.c
|
||||||
|
index ca89d230c..a99da01f3 100644
|
||||||
|
--- a/libfreerdp/core/surface.c
|
||||||
|
+++ b/libfreerdp/core/surface.c
|
||||||
|
@@ -37,7 +37,11 @@ static BOOL update_recv_surfcmd_bitmap_header_ex(wStream* s, TS_COMPRESSED_BITMA
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (Stream_GetRemainingLength(s) < 24)
|
||||||
|
+ {
|
||||||
|
+ WLog_ERR(TAG, "got %" PRIuz ", expected %" PRIuz " bytes", Stream_GetRemainingLength(s),
|
||||||
|
+ 24);
|
||||||
|
return FALSE;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
Stream_Read_UINT32(s, header->highUniqueId);
|
||||||
|
Stream_Read_UINT32(s, header->lowUniqueId);
|
||||||
|
@@ -54,7 +58,11 @@ static BOOL update_recv_surfcmd_bitmap_ex(wStream* s, TS_BITMAP_DATA_EX* bmp)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (Stream_GetRemainingLength(s) < 12)
|
||||||
|
+ {
|
||||||
|
+ WLog_ERR(TAG, "got %" PRIuz ", expected %" PRIuz " bytes", Stream_GetRemainingLength(s),
|
||||||
|
+ 12);
|
||||||
|
return FALSE;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
Stream_Read_UINT8(s, bmp->bpp);
|
||||||
|
Stream_Read_UINT8(s, bmp->flags);
|
||||||
|
@@ -86,7 +94,11 @@ static BOOL update_recv_surfcmd_bitmap_ex(wStream* s, TS_BITMAP_DATA_EX* bmp)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Stream_GetRemainingLength(s) < bmp->bitmapDataLength)
|
||||||
|
+ {
|
||||||
|
+ WLog_ERR(TAG, "expected bitmapDataLength %" PRIu32 ", not enough data",
|
||||||
|
+ bmp->bitmapDataLength);
|
||||||
|
return FALSE;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
pos = Stream_GetPosition(s) + bmp->bitmapDataLength;
|
||||||
|
bmp->bitmapData = Stream_Pointer(s);
|
||||||
|
@@ -132,7 +144,10 @@ static BOOL update_recv_surfcmd_surface_bits(rdpUpdate* update, wStream* s, UINT
|
||||||
|
SURFACE_BITS_COMMAND cmd = { 0 };
|
||||||
|
|
||||||
|
if (Stream_GetRemainingLength(s) < 8)
|
||||||
|
+ {
|
||||||
|
+ WLog_ERR(TAG, "got %" PRIuz ", expected %" PRIuz " bytes", Stream_GetRemainingLength(s), 8);
|
||||||
|
goto fail;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
cmd.cmdType = cmdType;
|
||||||
|
Stream_Read_UINT16(s, cmd.destLeft);
|
||||||
|
@@ -152,7 +167,12 @@ static BOOL update_recv_surfcmd_surface_bits(rdpUpdate* update, wStream* s, UINT
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
- return update->SurfaceBits(update->context, &cmd);
|
||||||
|
+ if (!update->SurfaceBits(update->context, &cmd))
|
||||||
|
+ {
|
||||||
|
+ WLog_DBG(TAG, "update->SurfaceBits implementation failed");
|
||||||
|
+ goto fail;
|
||||||
|
+ }
|
||||||
|
+ return TRUE;
|
||||||
|
fail:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
@@ -162,7 +182,10 @@ static BOOL update_recv_surfcmd_frame_marker(rdpUpdate* update, wStream* s)
|
||||||
|
SURFACE_FRAME_MARKER marker;
|
||||||
|
|
||||||
|
if (Stream_GetRemainingLength(s) < 6)
|
||||||
|
+ {
|
||||||
|
+ WLog_ERR(TAG, "got %" PRIuz ", expected %" PRIuz " bytes", Stream_GetRemainingLength(s), 6);
|
||||||
|
return FALSE;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
Stream_Read_UINT16(s, marker.frameAction);
|
||||||
|
Stream_Read_UINT32(s, marker.frameId);
|
||||||
|
@@ -176,7 +199,13 @@ static BOOL update_recv_surfcmd_frame_marker(rdpUpdate* update, wStream* s)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
- return update->SurfaceFrameMarker(update->context, &marker);
|
||||||
|
+ if (!update->SurfaceFrameMarker(update->context, &marker))
|
||||||
|
+ {
|
||||||
|
+ WLog_DBG(TAG, "update->SurfaceFrameMarker implementation failed");
|
||||||
|
+ return FALSE;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int update_recv_surfcmds(rdpUpdate* update, wStream* s)
|
||||||
|
@@ -246,10 +275,15 @@ static BOOL update_write_surfcmd_bitmap_ex(wStream* s, const TS_BITMAP_DATA_EX*
|
||||||
|
if (!Stream_EnsureRemainingCapacity(s, 12))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
+ if (bmp->codecID > UINT8_MAX)
|
||||||
|
+ {
|
||||||
|
+ WLog_ERR(TAG, "Invalid TS_BITMAP_DATA_EX::codecID=0x%04" PRIx16 "", bmp->codecID);
|
||||||
|
+ return FALSE;
|
||||||
|
+ }
|
||||||
|
Stream_Write_UINT8(s, bmp->bpp);
|
||||||
|
Stream_Write_UINT8(s, bmp->flags);
|
||||||
|
Stream_Write_UINT8(s, 0); /* reserved1, reserved2 */
|
||||||
|
- Stream_Write_UINT8(s, bmp->codecID);
|
||||||
|
+ Stream_Write_UINT8(s, (UINT8)bmp->codecID);
|
||||||
|
Stream_Write_UINT16(s, bmp->width);
|
||||||
|
Stream_Write_UINT16(s, bmp->height);
|
||||||
|
Stream_Write_UINT32(s, bmp->bitmapDataLength);
|
||||||
|
--
|
||||||
|
2.35.1
|
||||||
|
|
79
Implemented-4341-Default-to-network-auto.patch
Normal file
79
Implemented-4341-Default-to-network-auto.patch
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
From baf35cece9ff369d27deae1fed23d56907d82c31 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Armin Novak <armin.novak@thincast.com>
|
||||||
|
Date: Thu, 29 Jul 2021 13:26:05 +0200
|
||||||
|
Subject: [PATCH] Implemented #4341: Default to /network:auto
|
||||||
|
|
||||||
|
If no arguments are supplied, default to the behaviour of
|
||||||
|
/network:auto. This ensures the default experience is using the
|
||||||
|
best available graphics options.
|
||||||
|
As soon as any /network, /bpp, /rfx, /gfx, ... argument is used
|
||||||
|
only use these.
|
||||||
|
|
||||||
|
(cherry picked from commit d3168a1436eefe6864727991b18e458c2d6c87b3)
|
||||||
|
---
|
||||||
|
client/common/cmdline.c | 28 ++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 28 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/client/common/cmdline.c b/client/common/cmdline.c
|
||||||
|
index 15d481387..453a38c5f 100644
|
||||||
|
--- a/client/common/cmdline.c
|
||||||
|
+++ b/client/common/cmdline.c
|
||||||
|
@@ -27,6 +27,8 @@
|
||||||
|
#include <assert.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
+#include <assert.h>
|
||||||
|
+
|
||||||
|
#include <winpr/crt.h>
|
||||||
|
#include <winpr/wlog.h>
|
||||||
|
#include <winpr/path.h>
|
||||||
|
@@ -46,6 +48,8 @@
|
||||||
|
#include "cmdline.h"
|
||||||
|
|
||||||
|
#include <freerdp/log.h>
|
||||||
|
+
|
||||||
|
+#define WINPR_ASSERT(x) assert(x)
|
||||||
|
#define TAG CLIENT_TAG("common.cmdline")
|
||||||
|
|
||||||
|
static BOOL freerdp_client_print_codepages(const char* arg)
|
||||||
|
@@ -1567,6 +1571,28 @@ static BOOL parseSizeValue(const char* input, unsigned long* v1, unsigned long*
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static BOOL prepare_default_settings(rdpSettings* settings, const COMMAND_LINE_ARGUMENT_A* args,
|
||||||
|
+ BOOL rdp_file)
|
||||||
|
+{
|
||||||
|
+ size_t x;
|
||||||
|
+ const char* arguments[] = { "network", "gfx", "rfx", "bpp" };
|
||||||
|
+ WINPR_ASSERT(settings);
|
||||||
|
+ WINPR_ASSERT(args);
|
||||||
|
+
|
||||||
|
+ if (rdp_file)
|
||||||
|
+ return FALSE;
|
||||||
|
+
|
||||||
|
+ for (x = 0; x < ARRAYSIZE(arguments); x++)
|
||||||
|
+ {
|
||||||
|
+ const char* arg = arguments[x];
|
||||||
|
+ COMMAND_LINE_ARGUMENT_A* p = CommandLineFindArgumentA(args, arg);
|
||||||
|
+ if (p && (p->Flags & COMMAND_LINE_ARGUMENT_PRESENT))
|
||||||
|
+ return FALSE;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return freerdp_set_connection_type(settings, CONNECTION_TYPE_AUTODETECT);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings, int argc,
|
||||||
|
char** argv, BOOL allowUnknown)
|
||||||
|
{
|
||||||
|
@@ -1637,6 +1663,8 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings,
|
||||||
|
|
||||||
|
if (status < 0)
|
||||||
|
return status;
|
||||||
|
+
|
||||||
|
+ prepare_default_settings(settings, largs, ext);
|
||||||
|
}
|
||||||
|
|
||||||
|
CommandLineFindArgumentA(largs, "v");
|
||||||
|
--
|
||||||
|
2.35.1
|
||||||
|
|
45
Workaround-for-MS-RDPBCGR-2.2.9.2.3-Frame-Marker-Com.patch
Normal file
45
Workaround-for-MS-RDPBCGR-2.2.9.2.3-Frame-Marker-Com.patch
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
From 6462eca724a886e8c1abb5b41955108023d1c1e6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Armin Novak <armin.novak@thincast.com>
|
||||||
|
Date: Wed, 9 Mar 2022 09:01:11 +0100
|
||||||
|
Subject: [PATCH] Workaround for [MS-RDPBCGR] 2.2.9.2.3 Frame Marker Command
|
||||||
|
(TS_FRAME_MARKER)
|
||||||
|
|
||||||
|
Connections with windows 2016 and 2019 sometimes receive short
|
||||||
|
frame marker. Ignore these to prevent disconnects
|
||||||
|
|
||||||
|
(cherry picked from commit 91ef44ed35c99c409d39f6c480592f8601b45e35)
|
||||||
|
---
|
||||||
|
libfreerdp/core/surface.c | 11 +++++++++--
|
||||||
|
1 file changed, 9 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libfreerdp/core/surface.c b/libfreerdp/core/surface.c
|
||||||
|
index a99da01f3..e288799f1 100644
|
||||||
|
--- a/libfreerdp/core/surface.c
|
||||||
|
+++ b/libfreerdp/core/surface.c
|
||||||
|
@@ -181,14 +181,21 @@ static BOOL update_recv_surfcmd_frame_marker(rdpUpdate* update, wStream* s)
|
||||||
|
{
|
||||||
|
SURFACE_FRAME_MARKER marker;
|
||||||
|
|
||||||
|
- if (Stream_GetRemainingLength(s) < 6)
|
||||||
|
+ if (Stream_GetRemainingLength(s) < 2)
|
||||||
|
{
|
||||||
|
WLog_ERR(TAG, "got %" PRIuz ", expected %" PRIuz " bytes", Stream_GetRemainingLength(s), 6);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Stream_Read_UINT16(s, marker.frameAction);
|
||||||
|
- Stream_Read_UINT32(s, marker.frameId);
|
||||||
|
+ if (Stream_GetRemainingLength(s) < 4)
|
||||||
|
+ WLog_WARN(TAG,
|
||||||
|
+ "[SERVER-BUG]: got %" PRIuz ", expected %" PRIuz
|
||||||
|
+ " bytes. [MS-RDPBCGR] 2.2.9.2.3 Frame Marker Command (TS_FRAME_MARKER) is "
|
||||||
|
+ "missing frameId, ignoring",
|
||||||
|
+ Stream_GetRemainingLength(s), 4);
|
||||||
|
+ else
|
||||||
|
+ Stream_Read_UINT32(s, marker.frameId);
|
||||||
|
WLog_Print(update->log, WLOG_DEBUG,
|
||||||
|
"SurfaceFrameMarker: action: %s (%" PRIu32 ") id: %" PRIu32 "",
|
||||||
|
(!marker.frameAction) ? "Begin" : "End", marker.frameAction, marker.frameId);
|
||||||
|
--
|
||||||
|
2.35.1
|
||||||
|
|
@ -21,7 +21,7 @@
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
Name: freerdp
|
Name: freerdp
|
||||||
Version: 2.5.0
|
Version: 2.6.1
|
||||||
Release: 1%{?dist}
|
Release: 1%{?dist}
|
||||||
Epoch: 2
|
Epoch: 2
|
||||||
Summary: Free implementation of the Remote Desktop Protocol (RDP)
|
Summary: Free implementation of the Remote Desktop Protocol (RDP)
|
||||||
@ -30,6 +30,10 @@ URL: http://www.freerdp.com/
|
|||||||
|
|
||||||
Source0: https://github.com/FreeRDP/FreeRDP/archive/%{version}/FreeRDP-%{version}.tar.gz
|
Source0: https://github.com/FreeRDP/FreeRDP/archive/%{version}/FreeRDP-%{version}.tar.gz
|
||||||
|
|
||||||
|
Patch0: Added-more-log-messages-for-SurfaceCommand-failures.patch
|
||||||
|
Patch1: Implemented-4341-Default-to-network-auto.patch
|
||||||
|
Patch2: Workaround-for-MS-RDPBCGR-2.2.9.2.3-Frame-Marker-Com.patch
|
||||||
|
|
||||||
BuildRequires: gcc
|
BuildRequires: gcc
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
BuildRequires: alsa-lib-devel
|
BuildRequires: alsa-lib-devel
|
||||||
@ -295,6 +299,9 @@ find %{buildroot} -name "*.a" -delete
|
|||||||
%{_libdir}/pkgconfig/winpr-tools2.pc
|
%{_libdir}/pkgconfig/winpr-tools2.pc
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Mar 11 2022 Ondrej Holy <oholy@redhat.com> - 2:2.6.1-1
|
||||||
|
- Update to 2.6.1.
|
||||||
|
|
||||||
* Thu Feb 03 2022 Ondrej Holy <oholy@redhat.com> - 2:2.5.0-1
|
* Thu Feb 03 2022 Ondrej Holy <oholy@redhat.com> - 2:2.5.0-1
|
||||||
- Update to 2.5.0.
|
- Update to 2.5.0.
|
||||||
|
|
||||||
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (FreeRDP-2.5.0.tar.gz) = 7720306c8d0915578f6758f46ba0e0b8a81bbdcd1c80e08711576605142467f6735f644099e79a05113959fb30cd1070ca138a523537a41a7102880daf89c04c
|
SHA512 (FreeRDP-2.6.1.tar.gz) = 53ca93dfc09cfb49f9c434ef492a7c2f0359ecfdb28c68fcb41d5875508da45cc62e054dc134577245a3a5a63102bdb89e50aeed3090f01b578879c5d5db6dca
|
||||||
|
Loading…
Reference in New Issue
Block a user