aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog12
-rw-r--r--debian/patches/057_nx-X11-bigendian-ppc64-no-session-window.full.patch43
-rw-r--r--debian/patches/series1
3 files changed, 52 insertions, 4 deletions
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 <mike.gabriel@das-netzwerkteam.de> 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 <ionic@ionic.de>
+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