[PATCH] hw/xquartz: Various fixes for pseudoramiX.c

Jeremy Huddleston Sequoia jeremyhu at apple.com
Mon Jul 23 10:05:36 PDT 2012


Seems right to me:

Reviewed-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>

Thanks,
Jeremy

On Jul 23, 2012, at 04:16, Jon TURNEY <jon.turney at dronecode.org.uk> wrote:

> Various fixes, applied to panoramiX.c in commit 2b266eda, also need applying to pseudoramiX.c:
> Fix panoramiX request and reply swapping
> Set window and screen values in panoramix replies
> Prevent buffer overrun in ProcPanoramiXGetScreenSize
> 
> These fixes seem to be necessary in order to compile pseudoramiX.c with gcc
> 
> pseudoramiX.c: In function 'ProcPseudoramiXGetState':
> pseudoramiX.c:221:56: error: call to 'wrong_size' declared with attribute error: wrong sized variable passed to swap
> pseudoramiX.c: In function 'ProcPseudoramiXGetScreenCount':
> pseudoramiX.c:250:62: error: call to 'wrong_size' declared with attribute error: wrong sized variable passed to swap
> pseudoramiX.c: In function 'ProcPseudoramiXGetScreenSize':
> pseudoramiX.c:283:56: error: call to 'wrong_size' declared with attribute error: wrong sized variable passed to swap
> pseudoramiX.c:284:57: error: call to 'wrong_size' declared with attribute error: wrong sized variable passed to swap
> 
> Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
> ---
> hw/xquartz/pseudoramiX.c |   17 +++++++++++++----
> 1 files changed, 13 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/xquartz/pseudoramiX.c b/hw/xquartz/pseudoramiX.c
> index c650dd7..ccff64f 100644
> --- a/hw/xquartz/pseudoramiX.c
> +++ b/hw/xquartz/pseudoramiX.c
> @@ -212,10 +212,11 @@ ProcPseudoramiXGetState(ClientPtr client)
>     rep.length = 0;
>     rep.sequenceNumber = client->sequence;
>     rep.state = !noPseudoramiXExtension;
> +    rep.window = stuff->window;
>     if (client->swapped) {
>         swaps(&rep.sequenceNumber);
>         swapl(&rep.length);
> -        swaps(&rep.state);
> +        swapl(&rep.window);
>     }
>     WriteToClient(client, sizeof(xPanoramiXGetStateReply),&rep);
>     return Success;
> @@ -241,10 +242,11 @@ ProcPseudoramiXGetScreenCount(ClientPtr client)
>     rep.length = 0;
>     rep.sequenceNumber = client->sequence;
>     rep.ScreenCount = pseudoramiXNumScreens;
> +    rep.window = stuff->window;
>     if (client->swapped) {
>         swaps(&rep.sequenceNumber);
>         swapl(&rep.length);
> -        swaps(&rep.ScreenCount);
> +        swapl(&rep.window);
>     }
>     WriteToClient(client, sizeof(xPanoramiXGetScreenCountReply),&rep);
>     return Success;
> @@ -261,6 +263,9 @@ ProcPseudoramiXGetScreenSize(ClientPtr client)
> 
>     TRACE();
> 
> +    if (stuff->screen >= pseudoramiXNumScreens)
> +      return BadMatch;
> +
>     REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
>     rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
>     if (rc != Success)
> @@ -274,11 +279,15 @@ ProcPseudoramiXGetScreenSize(ClientPtr client)
>     // was screenInfo.screens[stuff->screen]->width;
>     rep.height = pseudoramiXScreens[stuff->screen].h;
>     // was screenInfo.screens[stuff->screen]->height;
> +    rep.window = stuff->window;
> +    rep.screen = stuff->screen;
>     if (client->swapped) {
>         swaps(&rep.sequenceNumber);
>         swapl(&rep.length);
> -        swaps(&rep.width);
> -        swaps(&rep.height);
> +        swapl(&rep.width);
> +        swapl(&rep.height);
> +        swapl(&rep.window);
> +        swapl(&rep.screen);
>     }
>     WriteToClient(client, sizeof(xPanoramiXGetScreenSizeReply),&rep);
>     return Success;
> -- 
> 1.7.9
> 



More information about the xorg-devel mailing list