aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver/randr
diff options
context:
space:
mode:
authorUlrich Sibiller <uli42@gmx.de>2020-10-16 18:57:47 +0200
committerUlrich Sibiller <uli42@gmx.de>2020-10-16 20:47:31 +0200
commitd1a967f3aefcffc6babeb25fccc912c0bfdb9fe3 (patch)
tree699e7cfae05945731de8fb335ab7887a3c2ff77d /nx-X11/programs/Xserver/randr
parent67330d9ea185de0f08731c684363078e349b1845 (diff)
downloadnx-libs-d1a967f3aefcffc6babeb25fccc912c0bfdb9fe3.tar.gz
nx-libs-d1a967f3aefcffc6babeb25fccc912c0bfdb9fe3.tar.bz2
nx-libs-d1a967f3aefcffc6babeb25fccc912c0bfdb9fe3.zip
randr: fix broken macros / memory corruption
By casting the rrScrPriv to ScreenPtr we are using the offsets from the Screen structure for referencing data in the rrScrPriv structure causing data corruption. As both macros use the same casting this still works until the location where the data resides is overwritten. For 64bit the location was the "rotations" member in rrScrPriv which was not problematic because it is barely used. But on 32bit it was "numCrtcs" which is heavily used. On unwrap this was 0 and lead to a segfault. Fixes ArcticaProject/nx-libs#943
Diffstat (limited to 'nx-X11/programs/Xserver/randr')
-rw-r--r--nx-X11/programs/Xserver/randr/randr.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/nx-X11/programs/Xserver/randr/randr.c b/nx-X11/programs/Xserver/randr/randr.c
index c742cf6e0..f8401a5cd 100644
--- a/nx-X11/programs/Xserver/randr/randr.c
+++ b/nx-X11/programs/Xserver/randr/randr.c
@@ -69,12 +69,12 @@
static int RRNScreens;
#define wrap(priv,real,mem,func) {\
- ((ScreenPtr)priv)->mem = ((ScreenPtr)real)->mem; \
- ((ScreenPtr)real)->mem = func; \
+ priv->mem = real->mem; \
+ real->mem = func; \
}
#define unwrap(priv,real,mem) {\
- ((ScreenPtr)real)->mem = ((ScreenPtr)priv)->mem; \
+ real->mem = priv->mem; \
}
static int ProcRRDispatch(ClientPtr pClient);