Blame SOURCES/0035-grub-core-disk-diskfilter.c-free_array-GRUB_UTIL-Fix.patch

f96e0b
From 56348e90bcc1076de7b2aba73b52fa1bafee4478 Mon Sep 17 00:00:00 2001
f96e0b
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
f96e0b
Date: Tue, 11 Sep 2012 07:53:26 +0200
f96e0b
Subject: [PATCH 035/482] 	* grub-core/disk/diskfilter.c (free_array)
f96e0b
 [GRUB_UTIL]: Fix memory leak. 	* util/getroot.c (grub_find_device): Likewise.
f96e0b
 	(get_mdadm_uuid): Likewise. 	(grub_util_is_imsm): Likewise. 
f96e0b
 (grub_util_pull_device): Likewise. 	* util/grub-probe.c (probe): Likewise.
f96e0b
f96e0b
---
f96e0b
 ChangeLog                   |  9 +++++++++
f96e0b
 grub-core/disk/diskfilter.c |  3 +++
f96e0b
 util/getroot.c              | 13 +++++++++++--
f96e0b
 util/grub-probe.c           |  1 +
f96e0b
 4 files changed, 24 insertions(+), 2 deletions(-)
f96e0b
f96e0b
diff --git a/ChangeLog b/ChangeLog
f96e0b
index 6886bcc..c697e17 100644
f96e0b
--- a/ChangeLog
f96e0b
+++ b/ChangeLog
f96e0b
@@ -1,3 +1,12 @@
f96e0b
+2012-09-11  Vladimir Serbinenko  <phcoder@gmail.com>
f96e0b
+
f96e0b
+	* grub-core/disk/diskfilter.c (free_array) [GRUB_UTIL]: Fix memory leak.
f96e0b
+	* util/getroot.c (grub_find_device): Likewise.
f96e0b
+	(get_mdadm_uuid): Likewise.
f96e0b
+	(grub_util_is_imsm): Likewise.
f96e0b
+	(grub_util_pull_device): Likewise.
f96e0b
+	* util/grub-probe.c (probe): Likewise.
f96e0b
+
f96e0b
 2012-09-10  Benoit Gschwind <gschwind>
f96e0b
 
f96e0b
 	* grub-core/loader/efi/appleloader.c (devpath_8): New var.
f96e0b
diff --git a/grub-core/disk/diskfilter.c b/grub-core/disk/diskfilter.c
f96e0b
index 6e9745e..ce4c706 100644
f96e0b
--- a/grub-core/disk/diskfilter.c
f96e0b
+++ b/grub-core/disk/diskfilter.c
f96e0b
@@ -1130,6 +1130,9 @@ free_array (void)
f96e0b
 	    grub_disk_close (pv->disk);
f96e0b
 	  if (pv->id.uuidlen)
f96e0b
 	    grub_free (pv->id.uuid);
f96e0b
+#ifdef GRUB_UTIL
f96e0b
+	  grub_free (pv->partmaps);
f96e0b
+#endif
f96e0b
 	  grub_free (pv->internal_id);
f96e0b
 	  grub_free (pv);
f96e0b
 	}
f96e0b
diff --git a/util/getroot.c b/util/getroot.c
f96e0b
index e103fb6..b97bea6 100644
f96e0b
--- a/util/getroot.c
f96e0b
+++ b/util/getroot.c
f96e0b
@@ -918,7 +918,10 @@ grub_find_device (const char *dir, dev_t dev)
f96e0b
 	     grub files */
f96e0b
 
f96e0b
 	  if (strcmp(res, "/dev/root") == 0)
f96e0b
-		continue;
f96e0b
+	    {
f96e0b
+	      free (res);
f96e0b
+	      continue;
f96e0b
+	    }
f96e0b
 
f96e0b
 	  if (chdir (saved_cwd) < 0)
f96e0b
 	    grub_util_error ("%s", _("cannot restore the original directory"));
f96e0b
@@ -1363,6 +1366,7 @@ get_mdadm_uuid (const char *os_dev)
f96e0b
 out:
f96e0b
   close (fd);
f96e0b
   waitpid (pid, NULL, 0);
f96e0b
+  free (buf);
f96e0b
 
f96e0b
   return name;
f96e0b
 }
f96e0b
@@ -1437,6 +1441,8 @@ grub_util_is_imsm (const char *os_dev)
f96e0b
 	    }
f96e0b
 	}
f96e0b
 
f96e0b
+      free (buf);
f96e0b
+
f96e0b
       return 0;
f96e0b
 
f96e0b
     out:
f96e0b
@@ -1577,7 +1583,10 @@ grub_util_pull_device (const char *os_dev)
f96e0b
 	char **devicelist = grub_util_raid_getmembers (os_dev, 0);
f96e0b
 	int i;
f96e0b
 	for (i = 0; devicelist[i];i++)
f96e0b
-	  grub_util_pull_device (devicelist[i]);
f96e0b
+	  {
f96e0b
+	    grub_util_pull_device (devicelist[i]);
f96e0b
+	    free (devicelist[i]);
f96e0b
+	  }
f96e0b
 	free (devicelist);
f96e0b
       }
f96e0b
 #endif
f96e0b
diff --git a/util/grub-probe.c b/util/grub-probe.c
f96e0b
index 6dd1073..c2a0f62 100644
f96e0b
--- a/util/grub-probe.c
f96e0b
+++ b/util/grub-probe.c
f96e0b
@@ -474,6 +474,7 @@ probe (const char *path, char **device_names, char delim)
f96e0b
 	  printf ("%s", label);
f96e0b
 	  putchar (delim);
f96e0b
 	}
f96e0b
+      grub_device_close (dev);
f96e0b
       goto end;
f96e0b
     }
f96e0b
 
f96e0b
-- 
f96e0b
1.8.2.1
f96e0b