DIX Fix: QueryFontReply packets can be too big to be allocated on the stack

This commit is contained in:
Ben Byer 2007-10-30 20:00:21 -07:00 committed by Jeremy Huddleston
parent 65c67205fd
commit d01986d5a9

View File

@ -1402,7 +1402,7 @@ ProcQueryFont(ClientPtr client)
rlength = sizeof(xQueryFontReply) +
FONTINFONPROPS(FONTCHARSET(pFont)) * sizeof(xFontProp) +
nprotoxcistructs * sizeof(xCharInfo);
reply = (xQueryFontReply *)ALLOCATE_LOCAL(rlength);
reply = (xQueryFontReply *)xalloc(rlength);
if(!reply)
{
return(BadAlloc);
@ -1414,7 +1414,7 @@ ProcQueryFont(ClientPtr client)
QueryFont( pFont, reply, nprotoxcistructs);
WriteReplyToClient(client, rlength, reply);
DEALLOCATE_LOCAL(reply);
xfree(reply);
return(client->noClientException);
}
}
@ -2260,7 +2260,7 @@ DoGetImage(ClientPtr client, int format, Drawable drawable,
length += widthBytesLine;
}
}
if(!(pBuf = (char *) ALLOCATE_LOCAL(length)))
if(!(pBuf = (char *)xalloc(length)))
return (BadAlloc);
WriteReplyToClient(client, sizeof (xGetImageReply), &xgi);
}
@ -2362,7 +2362,7 @@ DoGetImage(ClientPtr client, int format, Drawable drawable,
if (pVisibleRegion)
REGION_DESTROY(pDraw->pScreen, pVisibleRegion);
if (!im_return)
DEALLOCATE_LOCAL(pBuf);
xfree(pBuf);
return (client->noClientException);
}