aboutsummaryrefslogtreecommitdiff
path: root/debian/patches
diff options
context:
space:
mode:
authorMihai Moldovan <ionic@ionic.de>2015-02-10 18:41:08 +0100
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2015-02-10 19:40:39 +0100
commit2d68caca72bd36b168b36b252c8035643c69e692 (patch)
treed86206f39973bd98d82f0f865be2315330006eab /debian/patches
parent4dac57f3db5b283eb419f1e108cc8510bad1b0af (diff)
downloadnx-libs-2d68caca72bd36b168b36b252c8035643c69e692.tar.gz
nx-libs-2d68caca72bd36b168b36b252c8035643c69e692.tar.bz2
nx-libs-2d68caca72bd36b168b36b252c8035643c69e692.zip
Create Windows and fix drawing issues on Big Endian 64bit systems (057_nx-X11_sanitize-eventmasks.full.patch).
Multiple endiannes issues were setting incorrect event masks when creating and drawing 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.)
Diffstat (limited to 'debian/patches')
-rw-r--r--debian/patches/057_nx-X11_sanitize-eventmasks.full.patch70
-rw-r--r--debian/patches/series1
2 files changed, 0 insertions, 71 deletions
diff --git a/debian/patches/057_nx-X11_sanitize-eventmasks.full.patch b/debian/patches/057_nx-X11_sanitize-eventmasks.full.patch
deleted file mode 100644
index 9c1171712..000000000
--- a/debian/patches/057_nx-X11_sanitize-eventmasks.full.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-Description: Create Windows and fix drawing issues on Big Endian 64bit systems
-Author: Mihai Moldovan <ionic@ionic.de>
-Abstract:
- Multiple endiannes issues were setting incorrect event masks when creating and
- drawing 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
-@@ -3352,7 +3358,10 @@
-
- if (nxagentOption(Rootless) && nxagentWindowTopLevel(pWin))
- {
-- 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;
-
- XChangeWindowAttributes(nxagentDisplay, nxagentWindow(pWin), mask, &attributes);
- }
---- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c
-+++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c
-@@ -1665,7 +1665,10 @@
-
- attributes.background_pixel = nxagentBlackPixel;
-
-- nxagentGetDefaultEventMask((Mask*)&attributes.event_mask);
-+ /* Assume that the mask fits in int... broken on Big Endian 64bit systems. */
-+ Mask tmp_mask = attributes.event_mask;
-+ nxagentGetDefaultEventMask(&tmp_mask);
-+ attributes.event_mask = (int)tmp_mask;
-
- attributes.colormap = nxagentDefaultVisualColormap(nxagentDefaultVisual(pScreen));
-
diff --git a/debian/patches/series b/debian/patches/series
index ef4671ef7..fed95824d 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,4 +1,3 @@
-057_nx-X11_sanitize-eventmasks.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