From 913fcf1a74426725f14380dd5b34286a21c37ab7 Mon Sep 17 00:00:00 2001 From: Mario Trangoni Date: Sun, 25 Mar 2018 16:13:10 +0200 Subject: Fix some memory leaks. --- doc/libNX_X11/lcUniConv/8bit_tab_to_h.c | 6 ++++++ nx-X11/lib/include/xtrans/Xtrans.c | 13 +++++++------ nx-X11/lib/include/xtrans/Xtranssock.c | 5 ++--- nx-X11/programs/Xserver/Xi/exevents.c | 1 + nx-X11/programs/Xserver/dix/cursor.c | 1 + nx-X11/programs/Xserver/hw/nxagent/NXmiexpose.c | 6 ++++-- nx-X11/programs/Xserver/hw/nxagent/NXrender.c | 1 + nx-X11/programs/Xserver/hw/nxagent/compext/Png.c | 13 ++++++++----- nx-X11/programs/Xserver/mi/miexpose.c | 4 +++- nx-X11/programs/Xserver/mi/mizerline.c | 4 +++- nx-X11/programs/Xserver/render/render.c | 19 +++++++------------ nxcomp/src/Children.cpp | 1 + 12 files changed, 44 insertions(+), 30 deletions(-) diff --git a/doc/libNX_X11/lcUniConv/8bit_tab_to_h.c b/doc/libNX_X11/lcUniConv/8bit_tab_to_h.c index 993979aeb..469ec05bb 100644 --- a/doc/libNX_X11/lcUniConv/8bit_tab_to_h.c +++ b/doc/libNX_X11/lcUniConv/8bit_tab_to_h.c @@ -121,9 +121,15 @@ int main (int argc, char *argv[]) { char* fname = malloc(strlen(directory)+strlen(filename)+1); + if (fname == NULL) + { + printf("malloc failed\n"); + exit(1); + } strcpy(fname,directory); strcat(fname,filename); f = fopen(fname,"w"); if (f == NULL) + free(fname); exit(1); } diff --git a/nx-X11/lib/include/xtrans/Xtrans.c b/nx-X11/lib/include/xtrans/Xtrans.c index 328a970b1..033dd6cd7 100644 --- a/nx-X11/lib/include/xtrans/Xtrans.c +++ b/nx-X11/lib/include/xtrans/Xtrans.c @@ -980,16 +980,17 @@ TRANS(GetMyAddr) (XtransConnInfo ciptr, int *familyp, int *addrlenp, { prmsg (1,"GetMyAddr: malloc failed\n"); return -1; + } else { + memcpy(*addrp, ciptr->addr, ciptr->addrlen); + free(addrp); } - memcpy(*addrp, ciptr->addr, ciptr->addrlen); - return 0; } #endif int TRANS(GetPeerAddr) (XtransConnInfo ciptr, int *familyp, int *addrlenp, - Xtransaddr **addrp) + Xtransaddr **addrp) { prmsg (2,"GetPeerAddr(%d)\n", ciptr->fd); @@ -999,11 +1000,11 @@ TRANS(GetPeerAddr) (XtransConnInfo ciptr, int *familyp, int *addrlenp, if ((*addrp = malloc (ciptr->peeraddrlen)) == NULL) { - prmsg (1,"GetPeerAddr: malloc failed\n"); - return -1; + prmsg (1,"GetPeerAddr: malloc failed\n"); + return -1; } memcpy(*addrp, ciptr->peeraddr, ciptr->peeraddrlen); - + free(addrp); return 0; } diff --git a/nx-X11/lib/include/xtrans/Xtranssock.c b/nx-X11/lib/include/xtrans/Xtranssock.c index a7470edcd..090a325ce 100644 --- a/nx-X11/lib/include/xtrans/Xtranssock.c +++ b/nx-X11/lib/include/xtrans/Xtranssock.c @@ -2442,19 +2442,18 @@ SocketUNIXConnectPost: (ciptr->peeraddr = malloc(namelen)) == NULL) { prmsg (1, - "SocketUNIXCreateListener: Can't allocate space for the addr\n"); + "SocketUNIXCreateListener: Can't allocate space for the addr\n"); return TRANS_CONNECT_FAILED; } if (abstract) - sockname.sun_path[0] = '@'; + sockname.sun_path[0] = '@'; ciptr->family = AF_UNIX; ciptr->addrlen = namelen; ciptr->peeraddrlen = namelen; memcpy (ciptr->addr, &sockname, ciptr->addrlen); memcpy (ciptr->peeraddr, &sockname, ciptr->peeraddrlen); - return 0; } diff --git a/nx-X11/programs/Xserver/Xi/exevents.c b/nx-X11/programs/Xserver/Xi/exevents.c index 92b9f08ec..1991d1b29 100644 --- a/nx-X11/programs/Xserver/Xi/exevents.c +++ b/nx-X11/programs/Xserver/Xi/exevents.c @@ -656,6 +656,7 @@ AddExtensionClient(WindowPtr pWin, ClientPtr client, Mask mask, int mskidx) if (!others) return BadAlloc; if (!pWin->optional->inputMasks && !MakeInputMasks(pWin)) + free(others); return BadAlloc; bzero((char *)&others->mask[0], sizeof(Mask) * EMASKSIZE); others->mask[mskidx] = mask; diff --git a/nx-X11/programs/Xserver/dix/cursor.c b/nx-X11/programs/Xserver/dix/cursor.c index a1bf6a7ed..658edcb87 100644 --- a/nx-X11/programs/Xserver/dix/cursor.c +++ b/nx-X11/programs/Xserver/dix/cursor.c @@ -371,6 +371,7 @@ AllocGlyphCursor(Font source, unsigned sourceChar, Font mask, unsigned maskChar, if (!pShare) { FreeCursorBits(bits); + free(pCurs); return BadAlloc; } pShare->font = sourcefont; diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXmiexpose.c b/nx-X11/programs/Xserver/hw/nxagent/NXmiexpose.c index 04f746aaf..a51ae6fcc 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXmiexpose.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXmiexpose.c @@ -629,11 +629,13 @@ int what; screenContext[i] = CreateGC((DrawablePtr)pWin, (BITS32) 0, (XID *)NULL, &status); if (!screenContext[i]) + free(prect); return; numGCs++; if (!AddResource(FakeClientID(0), ResType, - (void *)screenContext[i])) - return; + (void *)screenContext[i])) + free(prect); + return; } pGC = screenContext[i]; newValues[SUBWINDOW].val = IncludeInferiors; diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXrender.c b/nx-X11/programs/Xserver/hw/nxagent/NXrender.c index 691b260cf..8937e2e7d 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXrender.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXrender.c @@ -995,6 +995,7 @@ ProcRenderCompositeGlyphs (ClientPtr client) { listsBase = (GlyphListPtr) malloc (nlist * sizeof (GlyphListRec)); if (!listsBase) + free(glyphsBase); return BadAlloc; } diff --git a/nx-X11/programs/Xserver/hw/nxagent/compext/Png.c b/nx-X11/programs/Xserver/hw/nxagent/compext/Png.c index 457080032..91412baa1 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/compext/Png.c +++ b/nx-X11/programs/Xserver/hw/nxagent/compext/Png.c @@ -283,6 +283,7 @@ char *PngCompressData(XImage *image, int *compressed_size) bitsPerPixel); #endif + free(image_index); return NULL; } @@ -315,6 +316,7 @@ char *PngCompressData(XImage *image, int *compressed_size) fprintf(stderr, "******PngCompressData: PANIC! Failed creating the png_create_write_struct.\n"); #endif + free(image_index); return NULL; } @@ -327,7 +329,7 @@ char *PngCompressData(XImage *image, int *compressed_size) #endif png_destroy_write_struct(&png_ptr, NULL); - + free(image_index); return NULL; } @@ -339,6 +341,7 @@ char *PngCompressData(XImage *image, int *compressed_size) png_destroy_write_struct(&png_ptr, &info_ptr); + free(image_index); return NULL; } @@ -360,6 +363,7 @@ char *PngCompressData(XImage *image, int *compressed_size) PNG_DEST_SIZE(w, h)); #endif + free(image_index); return NULL; } @@ -374,7 +378,6 @@ char *PngCompressData(XImage *image, int *compressed_size) png_destroy_write_struct(&png_ptr, &info_ptr); free(pngCompBuf); - return NULL; } @@ -470,7 +473,7 @@ char *PngCompressData(XImage *image, int *compressed_size) png_destroy_write_struct(&png_ptr, &info_ptr); free(pngCompBuf); - + free(image_index); return NULL; } @@ -484,7 +487,7 @@ char *PngCompressData(XImage *image, int *compressed_size) fprintf(stderr, "******PngCompressData: PANIC! Cannot allocate [%d] bytes.\n", (int) (w * sizeof(CARD8))); #endif - + free(image_index); return NULL; } @@ -516,7 +519,7 @@ char *PngCompressData(XImage *image, int *compressed_size) #endif free(pngCompBuf); - + free(image_index); return NULL; } diff --git a/nx-X11/programs/Xserver/mi/miexpose.c b/nx-X11/programs/Xserver/mi/miexpose.c index db7fdf010..a302bf578 100644 --- a/nx-X11/programs/Xserver/mi/miexpose.c +++ b/nx-X11/programs/Xserver/mi/miexpose.c @@ -766,11 +766,13 @@ int what; screenContext[i] = CreateGC((DrawablePtr)pWin, (BITS32) 0, (XID *)NULL, &status); if (!screenContext[i]) + free(prect); return; numGCs++; if (!AddResource(FakeClientID(0), ResType, (void *)screenContext[i])) - return; + free(prect); + return; } pGC = screenContext[i]; newValues[SUBWINDOW].val = IncludeInferiors; diff --git a/nx-X11/programs/Xserver/mi/mizerline.c b/nx-X11/programs/Xserver/mi/mizerline.c index 49d87edd8..c68e2c9a3 100644 --- a/nx-X11/programs/Xserver/mi/mizerline.c +++ b/nx-X11/programs/Xserver/mi/mizerline.c @@ -158,7 +158,9 @@ miZeroLine(pDraw, pGC, mode, npt, pptInit) pspanInit = (DDXPointPtr)malloc(list_len * sizeof(DDXPointRec)); pwidthInit = (int *)malloc(list_len * sizeof(int)); if (!pspanInit || !pwidthInit) - return; + free(pspanInit); + free(pwidthInit); + return; Nspans = 0; new_span = TRUE; diff --git a/nx-X11/programs/Xserver/render/render.c b/nx-X11/programs/Xserver/render/render.c index fb9208ad1..65ca41881 100644 --- a/nx-X11/programs/Xserver/render/render.c +++ b/nx-X11/programs/Xserver/render/render.c @@ -1346,6 +1346,8 @@ ProcRenderCompositeGlyphs (ClientPtr client) { listsBase = (GlyphListPtr) malloc (nlist * sizeof (GlyphListRec)); if (!listsBase) + free(glyphsBase); + free(listsBase); return BadAlloc; } buffer = (CARD8 *) (stuff + 1); @@ -2918,9 +2920,7 @@ PanoramiXRenderFillRectangles (ClientPtr client) result = (*PanoramiXSaveRenderVector[X_RenderFillRectangles]) (client); if(result != Success) break; } - free(extra); } - return result; } @@ -2979,10 +2979,9 @@ PanoramiXRenderTrapezoids(ClientPtr client) if(result != Success) break; } - - free(extra); } + free(extra); return result; } @@ -3038,9 +3037,8 @@ PanoramiXRenderTriangles(ClientPtr client) if(result != Success) break; } - free(extra); } - + free(extra); return result; } @@ -3092,9 +3090,8 @@ PanoramiXRenderTriStrip(ClientPtr client) if(result != Success) break; } - free(extra); } - + free(extra); return result; } @@ -3146,9 +3143,8 @@ PanoramiXRenderTriFan(ClientPtr client) if(result != Success) break; } - free(extra); } - + free(extra); return result; } @@ -3276,9 +3272,8 @@ PanoramiXRenderAddTraps (ClientPtr client) result = (*PanoramiXSaveRenderVector[X_RenderAddTraps]) (client); if(result != Success) break; } - free(extra); } - + free(extra); return result; } diff --git a/nxcomp/src/Children.cpp b/nxcomp/src/Children.cpp index 2431e5329..036cffa95 100644 --- a/nxcomp/src/Children.cpp +++ b/nxcomp/src/Children.cpp @@ -1038,6 +1038,7 @@ int UnsetEnv(const char *name) } result = 0; + delete[] varName; #else -- cgit v1.2.3