diff options
author | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2016-06-29 01:36:31 +0200 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2016-07-04 16:36:59 +0200 |
commit | 286d83260216e8e53db701eed5c785aae1c716bf (patch) | |
tree | 3b27e6dd17a7d4d00266819545ae97defa11cf81 /nx-X11/programs/Xserver/composite | |
parent | d1d859dfdec4b4665e06401383ab71926e4e731c (diff) | |
download | nx-libs-286d83260216e8e53db701eed5c785aae1c716bf.tar.gz nx-libs-286d83260216e8e53db701eed5c785aae1c716bf.tar.bz2 nx-libs-286d83260216e8e53db701eed5c785aae1c716bf.zip |
Use internal temp variable for swap macros. Make swaps/swapl type safe (introducing wrong_size check at build time).
While working on this changeset, various spots got discovered where
swapl or swaps was used on a wrong type, where byte swapping calls had
been forgotten or done on the wrong variable.
This backport at least includes changes from the following X.org
commits, listed in non-chronological order:
commit 2c7c520cfe0df30f4bc3adba59d9c62582823bf8
Author: Matt Turner <mattst88@gmail.com>
Date: Thu Aug 4 15:35:41 2011 -0400
Use internal temp variable for swap macros
Also, fix whitespace, mainly around
swaps(&rep.sequenceNumber)
Reviewed-by: Peter Harris <pharris@opentext.com>
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 9edcae78c46286baff42e74bfe26f6ae4d00fe01
Author: Matt Turner <mattst88@gmail.com>
Date: Wed Sep 21 17:14:16 2011 -0400
Use correct swap{l,s} (or none at all for CARD8)
Swapping the wrong size was never caught because swap{l,s} are macros.
It's clear in the case of Xext/xres.c, that the author believed
client_major/minor to be CARD16 from looking at the code in the first
hunk.
v2: dmx.c fixes from Keith.
Reviewed-by: Peter Harris <pharris@opentext.com>
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit dab064fa5e0b1f5c67222562ad5367005832cba1
Author: Andrea Canciani <ranma42@gmail.com>
Date: Tue Nov 2 20:10:32 2010 +0100
render: Fix byteswapping of gradient stops
The function swapStops repeatedly swaps the color components as
CARD16, but incorrectly steps over them as if they were CARD32.
This causes half of the stops not to be swapped at all and some
unrelated data be swapped instead.
Signed-off-by: Andrea Canciani <ranma42@gmail.com>
Reviewed-by: Soren Sandmann <sandmann@daimi.au.dk>
Reviewed-by: Julien Cristau <jcristau@debian.org>
Signed-off-by: Keith Packard <keithp@keithp.com>
commit 54770c980cd2b91a8377f975a58ed69def5cfa42
Author: Matt Turner <mattst88@gmail.com>
Date: Tue Aug 16 16:59:07 2011 -0400
Cast char* buffers to swap functions
Reviewed-by: Peter Harris <pharris@opentext.com>
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 6844bd2e63490870bab3c469eec6030354ef2865
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date: Wed Jan 9 19:52:00 2008 -0800
More Xv extension byte swapping fixes
commit e46f6ddeccd082b2d507a1e8b57ea30e6b0a2c83
Author: Michel Dänzer <michel@tungstengraphics.com>
Date: Wed Jan 16 14:24:22 2008 +0100
Yet another Xv extension byte swapping fix.
Diffstat (limited to 'nx-X11/programs/Xserver/composite')
-rw-r--r-- | nx-X11/programs/Xserver/composite/compext.c | 74 |
1 files changed, 31 insertions, 43 deletions
diff --git a/nx-X11/programs/Xserver/composite/compext.c b/nx-X11/programs/Xserver/composite/compext.c index dbde88625..7c629fc54 100644 --- a/nx-X11/programs/Xserver/composite/compext.c +++ b/nx-X11/programs/Xserver/composite/compext.c @@ -113,7 +113,6 @@ ProcCompositeQueryVersion (ClientPtr client) .sequenceNumber = client->sequence, .length = 0 }; - register int n; REQUEST(xCompositeQueryVersionReq); @@ -128,10 +127,10 @@ ProcCompositeQueryVersion (ClientPtr client) pCompositeClient->major_version = rep.majorVersion; pCompositeClient->minor_version = rep.minorVersion; if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.majorVersion, n); - swapl(&rep.minorVersion, n); + swaps(&rep.sequenceNumber); + swapl(&rep.length); + swapl(&rep.majorVersion); + swapl(&rep.minorVersion); } WriteToClient(client, sizeof(xCompositeQueryVersionReply), (char *)&rep); return Success; @@ -352,7 +351,6 @@ ProcCompositeGetOverlayWindow(ClientPtr client) CompScreenPtr cs; CompOverlayClientPtr pOc; int rc; - int n = 0; REQUEST_SIZE_MATCH(xCompositeGetOverlayWindowReq); /* Unsupported by current architecture and porting is too much effort. */ @@ -403,9 +401,9 @@ ProcCompositeGetOverlayWindow(ClientPtr client) }; if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.overlayWin, n); + swaps(&rep.sequenceNumber); + swapl(&rep.length); + swapl(&rep.overlayWin); } WriteToClient(client, sz_xCompositeGetOverlayWindowReply, (char *)&rep); @@ -470,111 +468,102 @@ ProcCompositeDispatch (ClientPtr client) static int SProcCompositeQueryVersion (ClientPtr client) { - int n; REQUEST(xCompositeQueryVersionReq); - swaps(&stuff->length, n); + swaps(&stuff->length); REQUEST_SIZE_MATCH(xCompositeQueryVersionReq); - swapl(&stuff->majorVersion, n); - swapl(&stuff->minorVersion, n); + swapl(&stuff->majorVersion); + swapl(&stuff->minorVersion); return (*ProcCompositeVector[stuff->compositeReqType]) (client); } static int SProcCompositeRedirectWindow (ClientPtr client) { - int n; REQUEST(xCompositeRedirectWindowReq); - swaps(&stuff->length, n); + swaps(&stuff->length); REQUEST_SIZE_MATCH(xCompositeRedirectWindowReq); - swapl (&stuff->window, n); + swapl (&stuff->window); return (*ProcCompositeVector[stuff->compositeReqType]) (client); } static int SProcCompositeRedirectSubwindows (ClientPtr client) { - int n; REQUEST(xCompositeRedirectSubwindowsReq); - swaps(&stuff->length, n); + swaps(&stuff->length); REQUEST_SIZE_MATCH(xCompositeRedirectSubwindowsReq); - swapl (&stuff->window, n); + swapl (&stuff->window); return (*ProcCompositeVector[stuff->compositeReqType]) (client); } static int SProcCompositeUnredirectWindow (ClientPtr client) { - int n; REQUEST(xCompositeUnredirectWindowReq); - swaps(&stuff->length, n); + swaps(&stuff->length); REQUEST_SIZE_MATCH(xCompositeUnredirectWindowReq); - swapl (&stuff->window, n); + swapl (&stuff->window); return (*ProcCompositeVector[stuff->compositeReqType]) (client); } static int SProcCompositeUnredirectSubwindows (ClientPtr client) { - int n; REQUEST(xCompositeUnredirectSubwindowsReq); - swaps(&stuff->length, n); + swaps(&stuff->length); REQUEST_SIZE_MATCH(xCompositeUnredirectSubwindowsReq); - swapl (&stuff->window, n); + swapl (&stuff->window); return (*ProcCompositeVector[stuff->compositeReqType]) (client); } static int SProcCompositeCreateRegionFromBorderClip (ClientPtr client) { - int n; REQUEST(xCompositeCreateRegionFromBorderClipReq); - swaps(&stuff->length, n); + swaps(&stuff->length); REQUEST_SIZE_MATCH(xCompositeCreateRegionFromBorderClipReq); - swapl (&stuff->region, n); - swapl (&stuff->window, n); + swapl (&stuff->region); + swapl (&stuff->window); return (*ProcCompositeVector[stuff->compositeReqType]) (client); } static int SProcCompositeNameWindowPixmap (ClientPtr client) { - int n; REQUEST(xCompositeNameWindowPixmapReq); - swaps(&stuff->length, n); + swaps(&stuff->length); REQUEST_SIZE_MATCH(xCompositeNameWindowPixmapReq); - swapl (&stuff->window, n); - swapl (&stuff->pixmap, n); + swapl (&stuff->window); + swapl (&stuff->pixmap); return (*ProcCompositeVector[stuff->compositeReqType]) (client); } static int SProcCompositeGetOverlayWindow(ClientPtr client) { - int n = 0; REQUEST(xCompositeGetOverlayWindowReq); - swaps(&stuff->length, n); + swaps(&stuff->length); REQUEST_SIZE_MATCH(xCompositeGetOverlayWindowReq); - swapl(&stuff->window, n); + swapl(&stuff->window); return (*ProcCompositeVector[stuff->compositeReqType]) (client); } static int SProcCompositeReleaseOverlayWindow(ClientPtr client) { - int n = 0; REQUEST(xCompositeReleaseOverlayWindowReq); - swaps(&stuff->length, n); + swaps(&stuff->length); REQUEST_SIZE_MATCH(xCompositeReleaseOverlayWindowReq); - swapl(&stuff->window, n); + swapl(&stuff->window); return (*ProcCompositeVector[stuff->compositeReqType]) (client); } @@ -903,7 +892,6 @@ PanoramiXCompositeGetOverlayWindow(ClientPtr client) int rc; PanoramiXRes *win, *overlayWin = NULL; int i; - int n = 0; REQUEST_SIZE_MATCH(xCompositeGetOverlayWindowReq); @@ -986,9 +974,9 @@ PanoramiXCompositeGetOverlayWindow(ClientPtr client) }; if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.overlayWin, n); + swaps(&rep.sequenceNumber); + swapl(&rep.length); + swapl(&rep.overlayWin); } WriteToClient(client, sz_xCompositeGetOverlayWindowReply, &rep); |