> Ack, please go ahead.
Uploaded.
diff -Nru xrdp-0.9.1/debian/changelog xrdp-0.9.1/debian/changelog
--- xrdp-0.9.1/debian/changelog 2017-02-13 21:09:43.000000000 +0100
+++ xrdp-0.9.1/debian/changelog 2017-02-18 16:46:17.000000000 +0100
@@ -1,3 +1,9 @@
+xrdp (0.9.1-7) unstable; urgency=medium
+
+ * Fix RFX with large tile sets, e.g. full HD displays. (Closes: #855387)
+
+ -- Dominik George <nik@naturalnet.de> Sat, 18 Feb 2017 16:46:17 +0100
+
xrdp (0.9.1-6) unstable; urgency=medium
* Fix japanese keyboard detection. (Closes: #854847)
diff -Nru xrdp-0.9.1/debian/patches/highres.diff xrdp-0.9.1/debian/patches/highres.diff
--- xrdp-0.9.1/debian/patches/highres.diff 1970-01-01 01:00:00.000000000 +0100
+++ xrdp-0.9.1/debian/patches/highres.diff 2017-02-17 14:00:59.000000000 +0100
@@ -0,0 +1,51 @@
+From: Dominik George <nik@naturalnet.de>
+Forwarded: https://github.com/neutrinolabs/xrdp/pull/664
+Acked-by: Thorsten Glaser <tg@mirbsd.de>
+Subject: RFX fixes for large tile sets.
+ This patch disables the limitation of rects to use and then
+ dynamically calculates the size of the message from the
+ rects that are really used.
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=855387
+Bug: https://github.com/neutrinolabs/xrdp/issues/524
+--- a/xrdp/xrdp_encoder.c
++++ b/xrdp/xrdp_encoder.c
+@@ -22,6 +22,7 @@
+ #include "xrdp.h"
+ #include "thread_calls.h"
+ #include "fifo.h"
++#include "limits.h"
+
+ #ifdef XRDP_RFXCODEC
+ #include "rfxcodec_encode.h"
+@@ -320,21 +321,25 @@ process_enc_rfx(struct xrdp_encoder *sel
+ mutex = self->mutex;
+ event_processed = self->xrdp_encoder_event_processed;
+
+- if ((enc->num_crects > 512) || (enc->num_drects > 512))
+- {
++ out_data_bytes = 16 * 1024 * 1024;
++
++ if ((enc->num_crects > (INT_MAX / sizeof(struct rfx_tile))) ||
++ (enc->num_drects > (INT_MAX / sizeof(struct rfx_rect) -
++ sizeof(struct rfx_tile) * enc->num_crects -
++ 256 - out_data_bytes)) ||
++ (enc->num_crects < 0) || (enc->num_drects < 0)) {
+ return 0;
+ }
+
+- out_data_bytes = 16 * 1024 * 1024;
+- index = 256 + sizeof(struct rfx_tile) * 512 +
+- sizeof(struct rfx_rect) * 512;
++ index = 256 + sizeof(struct rfx_tile) * enc->num_crects +
++ sizeof(struct rfx_rect) * enc->num_drects;
+ out_data = (char *) g_malloc(out_data_bytes + index, 0);
+ if (out_data == 0)
+ {
+ return 0;
+ }
+ tiles = (struct rfx_tile *) (out_data + out_data_bytes + 256);
+- rfxrects = (struct rfx_rect *) (tiles + 512);
++ rfxrects = (struct rfx_rect *) (tiles + enc->num_crects);
+
+ count = enc->num_crects;
+ for (index = 0; index < count; index++)
diff -Nru xrdp-0.9.1/debian/patches/series xrdp-0.9.1/debian/patches/series
--- xrdp-0.9.1/debian/patches/series 2017-02-13 21:06:43.000000000 +0100
+++ xrdp-0.9.1/debian/patches/series 2017-02-17 13:08:38.000000000 +0100
@@ -8,3 +8,4 @@
systemd.diff
lfs.diff
kb_jp.diff
+highres.diff
--
PGP-Fingerprint: 3C9D 54A4 7575 C026 FB17 FD26 B79A 3C16 A0C4 F296
Dominik George · Hundeshagenstr. 26 · 53225 Bonn
Mobile: +49-1520-1981389 · https://www.dominik-george.de/
Teckids e.V. · FrOSCon e.V.
Fellowship of the FSFE · Piratenpartei Deutschland
Opencaching Deutschland e.V. · Debian Maintainer
LPIC-3 Linux Enterprise Professional (Security)
Attachment:
signature.asc
Description: PGP signature