[X2Go-Commits] [nx-libs] 28/30: Fix some memory leaks.

git-admin at x2go.org git-admin at x2go.org
Tue Jul 3 22:24:08 CEST 2018


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch 3.6.x
in repository nx-libs.

commit 913fcf1a74426725f14380dd5b34286a21c37ab7
Author: Mario Trangoni <mjtrangoni at gmail.com>
Date:   Sun Mar 25 16:13:10 2018 +0200

    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 993979a..469ec05 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 328a970..033dd6c 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 a7470ed..090a325 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 92b9f08..1991d1b 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 a1bf6a7..658edcb 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 04f746a..a51ae6f 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 691b260..8937e2e 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 4570800..91412ba 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 db7fdf0..a302bf5 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 49d87ed..c68e2c9 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 fb9208a..65ca418 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 2431e53..036cffa 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
 

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/nx-libs.git


More information about the x2go-commits mailing list