> 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 <n...@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 <n...@naturalnet.de> +Forwarded: https://github.com/neutrinolabs/xrdp/pull/664 +Acked-by: Thorsten Glaser <t...@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)
signature.asc
Description: PGP signature