Hi all,

This is a small patch to fix couple of small memory leaks.

Hope it s useful.

Thanks.

Kind regards.
From 88024a5d4f36902ae66fe854d8ec93c3ed71cf8a Mon Sep 17 00:00:00 2001
From: David Carlier <[email protected]>
Date: Wed, 4 May 2016 22:03:19 +0100
Subject: [PATCH xserver] couple of memory leaks fixes and avoiding bit
 shifting on an unitialized value.

---
 Xext/shm.c                              | 1 +
 Xext/vidmode.c                          | 5 +++--
 composite/compext.c                     | 8 ++++++--
 hw/xfree86/ddc/ddc.c                    | 2 +-
 hw/xfree86/drivers/modesetting/driver.c | 1 +
 hw/xfree86/utils/gtf/gtf.c              | 2 ++
 os/rpcauth.c                            | 1 +
 7 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/Xext/shm.c b/Xext/shm.c
index b359a90..a63b42c 100644
--- a/Xext/shm.c
+++ b/Xext/shm.c
@@ -975,6 +975,7 @@ ProcPanoramiXShmCreatePixmap(ClientPtr client)
                               RT_PIXMAP, pMap, RT_NONE, NULL, DixCreateAccess);
             if (result != Success) {
                 pDraw->pScreen->DestroyPixmap(pMap);
+		 free(newPix);
                 return result;
             }
             dixSetPrivate(&pMap->devPrivates, shmPixmapPrivateKey, shmdesc);
diff --git a/Xext/vidmode.c b/Xext/vidmode.c
index 499a2a8..65ce20b 100644
--- a/Xext/vidmode.c
+++ b/Xext/vidmode.c
@@ -1315,7 +1315,7 @@ ProcVidModeGetDotClocks(ClientPtr client)
     int n;
     int numClocks;
     CARD32 dotclock;
-    int *Clocks = NULL;
+    int *Clocks = NULL, *Ptr;
     Bool ClockProg;
 
     DEBUG_P("XF86VidModeGetDotClocks");
@@ -1361,6 +1361,7 @@ ProcVidModeGetDotClocks(ClientPtr client)
         swapl(&rep.maxclocks);
         swapl(&rep.flags);
     }
+    Ptr = Clocks;
     WriteToClient(client, sizeof(xXF86VidModeGetDotClocksReply), &rep);
     if (!ClockProg) {
         for (n = 0; n < numClocks; n++) {
@@ -1374,7 +1375,7 @@ ProcVidModeGetDotClocks(ClientPtr client)
         }
     }
 
-    free(Clocks);
+    free(Ptr);
     return Success;
 }
 
diff --git a/composite/compext.c b/composite/compext.c
index f1a8255..96d07d7 100644
--- a/composite/compext.c
+++ b/composite/compext.c
@@ -762,14 +762,18 @@ PanoramiXCompositeNameWindowPixmap(ClientPtr client)
             return BadMatch;
         }
 
-        if (!AddResource(newPix->info[i].id, RT_PIXMAP, (void *) pPixmap))
+        if (!AddResource(newPix->info[i].id, RT_PIXMAP, (void *) pPixmap)) {
+	     free(newPix);
             return BadAlloc;
+	}
 
         ++pPixmap->refcnt;
     }
 
-    if (!AddResource(stuff->pixmap, XRT_PIXMAP, (void *) newPix))
+    if (!AddResource(stuff->pixmap, XRT_PIXMAP, (void *) newPix)) {
+	 free(newPix);
         return BadAlloc;
+    }
 
     return Success;
 }
diff --git a/hw/xfree86/ddc/ddc.c b/hw/xfree86/ddc/ddc.c
index ee533db..b82dfc1 100644
--- a/hw/xfree86/ddc/ddc.c
+++ b/hw/xfree86/ddc/ddc.c
@@ -149,7 +149,7 @@ GetEDID_DDC1(unsigned int *s_ptr)
         return NULL;
     s_end = s_ptr + NUM;
     s_pos = s_ptr + s_start;
-    d_block = malloc(EDID1_LEN);
+    d_block = calloc(1, EDID1_LEN);
     if (!d_block)
         return NULL;
     d_pos = d_block;
diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c
index fe5d5e1..0a0ca65 100644
--- a/hw/xfree86/drivers/modesetting/driver.c
+++ b/hw/xfree86/drivers/modesetting/driver.c
@@ -761,6 +761,7 @@ ms_get_drm_master_fd(ScrnInfoPtr pScrn)
                 );
         }
         ms->fd = drmOpen(NULL, BusID);
+	 free(BusID);
     }
     else {
         const char *devicename;
diff --git a/hw/xfree86/utils/gtf/gtf.c b/hw/xfree86/utils/gtf/gtf.c
index e88387d..c31bc8f 100644
--- a/hw/xfree86/utils/gtf/gtf.c
+++ b/hw/xfree86/utils/gtf/gtf.c
@@ -692,6 +692,8 @@ main(int argc, char *argv[])
     if (o->fbmode)
         print_fb_mode(m);
 
+    free(m);
+
     return 0;
 
 }
diff --git a/os/rpcauth.c b/os/rpcauth.c
index 5680489..923ffc3 100644
--- a/os/rpcauth.c
+++ b/os/rpcauth.c
@@ -111,6 +111,7 @@ authdes_ezdecode(const char *inmsg, int len)
  bad2:
     free(r.rq_clntcred);
  bad1:
+    free(temp_inmsg);
     return ((char *) 0);        /* ((struct authdes_cred *) NULL); */
 }
 
-- 
2.8.1

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to