]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/disk/diskfilter.c (free_array) [GRUB_UTIL]: Fix memory leak.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 11 Sep 2012 05:53:26 +0000 (07:53 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 11 Sep 2012 05:53:26 +0000 (07:53 +0200)
* util/getroot.c (grub_find_device): Likewise.
(get_mdadm_uuid): Likewise.
(grub_util_is_imsm): Likewise.
(grub_util_pull_device): Likewise.
* util/grub-probe.c (probe): Likewise.

ChangeLog
grub-core/disk/diskfilter.c
util/getroot.c
util/grub-probe.c

index 6886bccb1cd8888893f4573278482854cefbc434..c697e1715712efea85d6758f5335e8c03cb70ba9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2012-09-11  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/disk/diskfilter.c (free_array) [GRUB_UTIL]: Fix memory leak.
+       * util/getroot.c (grub_find_device): Likewise.
+       (get_mdadm_uuid): Likewise.
+       (grub_util_is_imsm): Likewise.
+       (grub_util_pull_device): Likewise.
+       * util/grub-probe.c (probe): Likewise.
+
 2012-09-10  Benoit Gschwind <gschwind>
 
        * grub-core/loader/efi/appleloader.c (devpath_8): New var.
index 6e9745e350e8104f1e66fa33e45f5f45586b6c8e..ce4c706d9d139f15e940cc2941b1127566a3ba59 100644 (file)
@@ -1130,6 +1130,9 @@ free_array (void)
            grub_disk_close (pv->disk);
          if (pv->id.uuidlen)
            grub_free (pv->id.uuid);
+#ifdef GRUB_UTIL
+         grub_free (pv->partmaps);
+#endif
          grub_free (pv->internal_id);
          grub_free (pv);
        }
index e103fb6c114aebf42e9067f54d50965459f64050..b97bea6cb18cb58387011fa26cb6d8179d7b73b6 100644 (file)
@@ -918,7 +918,10 @@ grub_find_device (const char *dir, dev_t dev)
             grub files */
 
          if (strcmp(res, "/dev/root") == 0)
-               continue;
+           {
+             free (res);
+             continue;
+           }
 
          if (chdir (saved_cwd) < 0)
            grub_util_error ("%s", _("cannot restore the original directory"));
@@ -1363,6 +1366,7 @@ get_mdadm_uuid (const char *os_dev)
 out:
   close (fd);
   waitpid (pid, NULL, 0);
+  free (buf);
 
   return name;
 }
@@ -1437,6 +1441,8 @@ grub_util_is_imsm (const char *os_dev)
            }
        }
 
+      free (buf);
+
       return 0;
 
     out:
@@ -1577,7 +1583,10 @@ grub_util_pull_device (const char *os_dev)
        char **devicelist = grub_util_raid_getmembers (os_dev, 0);
        int i;
        for (i = 0; devicelist[i];i++)
-         grub_util_pull_device (devicelist[i]);
+         {
+           grub_util_pull_device (devicelist[i]);
+           free (devicelist[i]);
+         }
        free (devicelist);
       }
 #endif
index 6dd1073d1ff2a62c85283526d0ec3c428dc91ffa..c2a0f6280715d569d6d949626c0623ead558caeb 100644 (file)
@@ -474,6 +474,7 @@ probe (const char *path, char **device_names, char delim)
          printf ("%s", label);
          putchar (delim);
        }
+      grub_device_close (dev);
       goto end;
     }