Xext: shape: fix warning on possible NULL dereference

Try not to rely on deep black magic of calloc(), instead skip the whole
part of nrects is zero.

| ../Xext/shape.c: In function ‘ProcShapeGetRectangles’:
| ../Xext/shape.c:995:24: warning: dereference of possibly-NULL ‘rects’ [CWE-690] [-Wanalyzer-possible-null-dereference]
|   995 |             rects[i].x = box->x1;
|       |             ~~~~~~~~~~~^~~~~~~~~

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult 2025-05-06 16:56:51 +02:00
parent 7a6d2d41bd
commit c4642f2632

View File

@ -938,7 +938,7 @@ ProcShapeGetRectangles(ClientPtr client)
REQUEST(xShapeGetRectanglesReq); REQUEST(xShapeGetRectanglesReq);
WindowPtr pWin; WindowPtr pWin;
xShapeGetRectanglesReply rep; xShapeGetRectanglesReply rep;
xRectangle *rects; xRectangle *rects = NULL;
int nrects, i, rc; int nrects, i, rc;
RegionPtr region; RegionPtr region;
@ -991,14 +991,16 @@ ProcShapeGetRectangles(ClientPtr client)
nrects = RegionNumRects(region); nrects = RegionNumRects(region);
box = RegionRects(region); box = RegionRects(region);
rects = xallocarray(nrects, sizeof(xRectangle)); if (nrects) {
if (!rects && nrects) rects = calloc(nrects, sizeof(xRectangle));
return BadAlloc; if (!rects)
for (i = 0; i < nrects; i++, box++) { return BadAlloc;
rects[i].x = box->x1; for (i = 0; i < nrects; i++, box++) {
rects[i].y = box->y1; rects[i].x = box->x1;
rects[i].width = box->x2 - box->x1; rects[i].y = box->y1;
rects[i].height = box->y2 - box->y1; rects[i].width = box->x2 - box->x1;
rects[i].height = box->y2 - box->y1;
}
} }
} }
rep = (xShapeGetRectanglesReply) { rep = (xShapeGetRectanglesReply) {