From cfb1990d4e845201182ef254da0ae9fe0536c616 Mon Sep 17 00:00:00 2001 From: Mihai Moldovan Date: Sat, 21 Jun 2014 22:29:44 +0200 Subject: Add 057_nx-X11-bigendian-ppc64-no-session-window.patch. Fix failures in session windows coming up on Big Endian systems like PPC64. (Fixes: #516). --- debian/changelog | 12 ++++-- ...11-bigendian-ppc64-no-session-window.full.patch | 43 ++++++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 debian/patches/057_nx-X11-bigendian-ppc64-no-session-window.full.patch diff --git a/debian/changelog b/debian/changelog index 47a74ecc2..f6d55fbc7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,13 @@ nx-libs (2:3.5.0.25-0x2go1) UNRELEASED; urgency=low + [ Mihai Moldovan ] + * Add 029_nxcomp_ppc64.full+lite.patch. Fix sockaddr handling on + Big Endian systems (like PPC64). (Fixes: #515). + * Add 057_nx-X11-bigendian-ppc64-no-session-window.patch. Fix + failures in session windows coming up on Big Endian systems + like PPC64. (Fixes: #516). + + [ Mike Gabriel ] * Add 606_nx-X11_build-on-aarch64.full.patch. Build on aarch64 architectures. (Fixes: #490). * Add 027_nxcomp_abstract-X11-socket.full+lite.patch. In proxy mode "server" @@ -16,10 +24,6 @@ nx-libs (2:3.5.0.25-0x2go1) UNRELEASED; urgency=low test for xkb/rules/base instead of testing for deprecated file xkb/keymap.dir. (Fixes: #40). - [ Mihai Moldovan ] - * Add 029_nxcomp_ppc64.full+lite.patch. Fix sockaddr handling on - Big Endian systems (like PPC64). (Fixes: #515). - -- Mike Gabriel Wed, 07 May 2014 09:58:10 +0200 nx-libs (2:3.5.0.24-0x2go1) unstable; urgency=low diff --git a/debian/patches/057_nx-X11-bigendian-ppc64-no-session-window.full.patch b/debian/patches/057_nx-X11-bigendian-ppc64-no-session-window.full.patch new file mode 100644 index 000000000..eae46e10d --- /dev/null +++ b/debian/patches/057_nx-X11-bigendian-ppc64-no-session-window.full.patch @@ -0,0 +1,43 @@ +Description: No session window with on PPC64 builds +Author: Mihai Moldovan +Abstract: + An endiannes issue was setting incorrect event masks when creating X11 windows. + . + This time, a smaller integer has been casted to a bigger one and passed to some + function actually setting its value. + . + This meant, that garbage from stack was attached to the smaller integer value, + putting unknown memory into the lower bytes of the bigger integer. + . + Fix this by creating a big, initialized temporary variable, let the function do + its magic on that one and pass the value back to the smaller variable -- and + cross your fingers the smaller variable can hold it without overrunning. (The + last bit is a design issue we can't really fix and has been around even before + this patch.) + +--- a/nx-X11/programs/Xserver/hw/nxagent/Window.c ++++ b/nx-X11/programs/Xserver/hw/nxagent/Window.c +@@ -327,7 +327,10 @@ + + if (mask & CWEventMask) + { +- nxagentGetEventMask(pWin, (Mask*)&attributes.event_mask); ++ /* Assume that the mask fits in int... broken on Big Endian 64bit systems. */ ++ Mask tmp_mask = attributes.event_mask; ++ nxagentGetEventMask(pWin, &tmp_mask); ++ attributes.event_mask = (int)tmp_mask; + } + #ifdef WARNING + else +@@ -2891,7 +2894,10 @@ + + if (mask & CWEventMask) + { +- nxagentGetEventMask(pWin, (Mask*)&attributes.event_mask); ++ /* Assume that the mask fits in int... broken on Big Endian 64bit systems. */ ++ Mask tmp_mask = attributes.event_mask; ++ nxagentGetEventMask(pWin, &tmp_mask); ++ attributes.event_mask = (int)tmp_mask; + } + #ifdef WARNING + else diff --git a/debian/patches/series b/debian/patches/series index 58a164caf..5d28ae759 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -33,6 +33,7 @@ 054_nx-X11_ppc64-ftbfs.full.patch 055_nx-X11_imake-Werror-format-security.full.patch 056_nx-X11-Werror-format-security.full.patch +057_nx-X11-bigendian-ppc64-no-session-window.full.patch 101_nxagent_set-rgb-path.full.patch 102_xserver-xext_set-securitypolicy-path.full.patch 103_nxagent_set-X0-config-path.full.patch -- cgit v1.2.3