I believe that's wrong behavior. GetImage is spec'd that way.
PutImage is not.
Mark.
On Thu, 18 Dec 2003, Alan Hourihane wrote:
> Looking at ProcShmGetImage() there's a bunch of checking for out-of-bounds
> coordinates, but ProcShmPutImage() lacks this checking.
>
> Is this patch reasonable or too much (it does fix the problem) but I'm
> wondering if the bounds are too strict for PutImage ?
>
> Alan.
>
> Index: shm.c
> ===================================================================
> RCS file: /X11R6/x-cvs/xc/programs/Xserver/Xext/shm.c,v
> retrieving revision 3.40
> diff -u -r3.40 shm.c
> --- shm.c 17 Nov 2003 22:20:27 -0000 3.40
> +++ shm.c 18 Dec 2003 14:17:07 -0000
> @@ -815,6 +815,34 @@
> REQUEST_SIZE_MATCH(xShmPutImageReq);
> VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client);
> VERIFY_SHMPTR(stuff->shmseg, stuff->offset, FALSE, shmdesc, client);
> + if (pDraw->type == DRAWABLE_WINDOW)
> + {
> + if( /* check for being viewable */
> + !((WindowPtr) pDraw)->realized ||
> + /* check for being on screen */
> + pDraw->x + stuff->dstX < 0 ||
> + pDraw->x + stuff->dstX + (int)stuff->srcWidth > pDraw->pScreen->width ||
> + pDraw->y + stuff->dstY < 0 ||
> + pDraw->y + stuff->dstY + (int)stuff->srcHeight > pDraw->pScreen->height ||
> + /* check for being inside of border */
> + stuff->dstX < - wBorderWidth((WindowPtr)pDraw) ||
> + stuff->dstX + (int)stuff->srcWidth >
> + wBorderWidth((WindowPtr)pDraw) + (int)pDraw->width ||
> + stuff->dstY < -wBorderWidth((WindowPtr)pDraw) ||
> + stuff->dstY + (int)stuff->srcHeight >
> + wBorderWidth((WindowPtr)pDraw) + (int)pDraw->height
> + )
> + return(BadMatch);
> + }
> + else
> + {
> + if (stuff->dstX < 0 ||
> + stuff->dstX+(int)stuff->srcWidth > pDraw->width ||
> + stuff->dstY < 0 ||
> + stuff->dstY+(int)stuff->srcHeight > pDraw->height
> + )
> + return(BadMatch);
> + }
> if ((stuff->sendEvent != xTrue) && (stuff->sendEvent != xFalse))
> return BadValue;
> if (stuff->format == XYBitmap)
> _______________________________________________
> Devel mailing list
> [EMAIL PROTECTED]
> http://XFree86.Org/mailman/listinfo/devel
>
_______________________________________________
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel