From 45d7b62d956304e708e66d174d3f6e32695ff327 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Thu, 10 Apr 2025 18:39:48 +0200 Subject: [PATCH] xfixes: use calloc() instead of malloc() Using calloc() instead of malloc() as preventive measure, so there never can be any hidden bugs or leaks due uninitialized memory. The extra cost of using this compiler intrinsic should be practically impossible to measure - in many cases a good compiler can even deduce if certain areas really don't need to be zero'd (because they're written to right after allocation) and create more efficient machine code. The code pathes in question are pretty cold anyways, so it's probably not worth even thinking about potential extra runtime costs. Signed-off-by: Enrico Weigelt, metux IT consult --- xfixes/cursor.c | 15 +++++++-------- xfixes/select.c | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/xfixes/cursor.c b/xfixes/cursor.c index 0660471f1..cde0f0ede 100644 --- a/xfixes/cursor.c +++ b/xfixes/cursor.c @@ -222,7 +222,7 @@ XFixesSelectCursorInput(ClientPtr pClient, WindowPtr pWindow, CARD32 eventMask) return Success; } if (!e) { - e = (CursorEventPtr) malloc(sizeof(CursorEventRec)); + e = calloc(1, sizeof(CursorEventRec)); if (!e) return BadAlloc; @@ -354,7 +354,6 @@ int ProcXFixesGetCursorImage(ClientPtr client) { /* REQUEST(xXFixesGetCursorImageReq); */ - xXFixesGetCursorImageReply *rep; CursorPtr pCursor; CARD32 *image; int npixels, width, height, rc, x, y; @@ -371,7 +370,8 @@ ProcXFixesGetCursorImage(ClientPtr client) width = pCursor->bits->width; height = pCursor->bits->height; npixels = width * height; - rep = calloc(1, + + xXFixesGetCursorImageReply *rep = calloc(1, sizeof(xXFixesGetCursorImageReply) + npixels * sizeof(CARD32)); if (!rep) return BadAlloc; @@ -494,7 +494,6 @@ int ProcXFixesGetCursorImageAndName(ClientPtr client) { /* REQUEST(xXFixesGetCursorImageAndNameReq); */ - xXFixesGetCursorImageAndNameReply *rep; CursorPtr pCursor; CARD32 *image; int npixels; @@ -518,7 +517,9 @@ ProcXFixesGetCursorImageAndName(ClientPtr client) name = pCursor->name ? NameForAtom(pCursor->name) : ""; nbytes = strlen(name); nbytesRound = pad_to_int32(nbytes); - rep = calloc(1, sizeof(xXFixesGetCursorImageAndNameReply) + + + xXFixesGetCursorImageAndNameReply *rep = calloc(1, + sizeof(xXFixesGetCursorImageAndNameReply) + npixels * sizeof(CARD32) + nbytesRound); if (!rep) return BadAlloc; @@ -758,9 +759,7 @@ static int createCursorHideCount(ClientPtr pClient, ScreenPtr pScreen) { CursorScreenPtr cs = GetCursorScreen(pScreen); - CursorHideCountPtr pChc; - - pChc = (CursorHideCountPtr) malloc(sizeof(CursorHideCountRec)); + CursorHideCountPtr pChc = calloc(1, sizeof(CursorHideCountRec)); if (pChc == NULL) { return BadAlloc; } diff --git a/xfixes/select.c b/xfixes/select.c index 665a288aa..1e8c7ee45 100644 --- a/xfixes/select.c +++ b/xfixes/select.c @@ -142,7 +142,7 @@ XFixesSelectSelectionInput(ClientPtr pClient, return Success; } if (!e) { - e = (SelectionEventPtr) malloc(sizeof(SelectionEventRec)); + e = calloc(1, sizeof(SelectionEventRec)); if (!e) return BadAlloc;