From 6214c71b32aa3562aeff08ffa63e67323a2cc05b Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Mon, 4 Jan 2021 19:07:06 +0100 Subject: Screen.c: check for malloc failures PVS finding: "V522 There might be dereferencing of a potential null pointer" --- nx-X11/programs/Xserver/hw/nxagent/Screen.c | 39 +++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'nx-X11') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Screen.c b/nx-X11/programs/Xserver/hw/nxagent/Screen.c index 86f88bb7b..cff0eb76a 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c @@ -1156,6 +1156,14 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, int argc, char *argv[]) */ DepthPtr depths = (DepthPtr) malloc(nxagentNumDepths * sizeof(DepthRec)); + if (!depths) + { + #ifdef WARNING + fprintf(stderr, "WARNING: Could not allocate depths array\n"); + #endif + /* FIXME: free data allocated above */ + return False; + } for (int i = 0; i < nxagentNumDepths; i++) { @@ -1177,6 +1185,14 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, int argc, char *argv[]) int numDepths = nxagentNumDepths; VisualPtr visuals = (VisualPtr) malloc(nxagentNumVisuals * sizeof(VisualRec)); + if (!visuals) + { + #ifdef WARNING + fprintf(stderr, "WARNING: Could not allocate visual array\n"); + #endif + /* FIXME: free data allocated above */ + return False; + } int defaultVisualIndex = 0; @@ -3058,6 +3074,14 @@ void nxagentShadowAdaptDepth(unsigned int width, unsigned int height, unsigned char *cBuffer = malloc(length); unsigned char *icBuffer = cBuffer; + if (!cBuffer) + { + #ifdef WARNING + fprintf(stderr, "WARNING: could not allocate cBuffer\n"); + #endif + return; + } + Visual *pVisual = nxagentImageVisual((DrawablePtr) nxagentShadowPixmapPtr, nxagentShadowDepth); if (pVisual == NULL) @@ -4203,6 +4227,13 @@ void nxagentSaveAreas(PixmapPtr pPixmap, RegionPtr prgnSave, int xorg, int yorg, int nRects = RegionNumRects(&cleanRegion); int size = nRects * sizeof(XRectangle); XRectangle *pRects = (XRectangle *) malloc(size); + if (!pRects) + { + #ifdef WARNING + fprintf(stderr, "Could not allocate pRects\n"); + #endif + return; + } BoxPtr pBox = RegionRects(&cleanRegion); for (int i = nRects; i-- > 0;) @@ -4336,6 +4367,14 @@ void nxagentRestoreAreas(PixmapPtr pPixmap, RegionPtr prgnRestore, int xorg, int nRects = RegionNumRects(clipRegion); int size = nRects * sizeof(XRectangle); XRectangle *pRects = (XRectangle *) malloc(size); + if (!pRects) + { + #ifdef WARNING + fprintf(stderr, "Could not allocate pRects\n"); + #endif + return; + } + BoxPtr pBox = RegionRects(clipRegion); for (int i = nRects; i-- > 0;) -- cgit v1.2.3