[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#855397: unblock: xrdp/0.9.1-7



> 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


Reply to: