From 3f7370d53fe7f22ac78ebb8ef652ba2b9923d2a2 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Tue, 6 May 2025 17:05:07 +0200 Subject: [PATCH] Xext: panoramix: protect from allocation failures Handle memory allocations gracefully, instead of just segfaulting. Signed-off-by: Enrico Weigelt, metux IT consult --- Xext/panoramiX.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c index c9cf285c5..661e9f6e3 100644 --- a/Xext/panoramiX.c +++ b/Xext/panoramiX.c @@ -806,7 +806,6 @@ extern void PanoramiXConsolidate(void) { int i; - PanoramiXRes *root, *defmap, *saver; ScreenPtr pScreen = screenInfo.screens[0]; DepthPtr pDepth = pScreen->allowedDepths; VisualPtr pVisual = pScreen->visuals; @@ -820,11 +819,23 @@ PanoramiXConsolidate(void) for (i = 0; i < pScreen->numVisuals; i++) PanoramiXMaybeAddVisual(pVisual++); - root = malloc(sizeof(PanoramiXRes)); + PanoramiXRes *root = calloc(1, sizeof(PanoramiXRes)); + if (!root) + return; + root->type = XRT_WINDOW; - defmap = malloc(sizeof(PanoramiXRes)); + PanoramiXRes *defmap = calloc(1, sizeof(PanoramiXRes)); + if (!defmap) { + free(root); + return; + } defmap->type = XRT_COLORMAP; - saver = malloc(sizeof(PanoramiXRes)); + PanoramiXRes *saver = calloc(1, sizeof(PanoramiXRes)); + if (!saver) { + free(root); + free(defmap); + return; + } saver->type = XRT_WINDOW; FOR_NSCREENS_BACKWARD(i) {