]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/normal/main.c (grub_normal_free_menu): Fix memory leak.
authorAndreas Vogel <Andreas.Vogel@anvo-it.de>
Sun, 4 Mar 2012 23:41:37 +0000 (00:41 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 4 Mar 2012 23:41:37 +0000 (00:41 +0100)
ChangeLog
grub-core/normal/main.c

index c5b6d9d9f42bdb49b3fc5cf11f9fba459981a314..736f007eff79e3af5bdb05b08f63dbb5dea651ef 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2012-03-04  Andreas Vogel <Andreas.Vogel@anvo-it.de>
+
+       * grub-core/normal/main.c (grub_normal_free_menu): Fix memory leak.
+
 2012-03-04  Hideki EIRAKU <hdk1983@gmail.com>
 
        * grub-core/normal/menu_entry.c (kill_line): Fix a crash and off-by-one
index be5d6b5bfd0143bad67399c592ac855146b1e78d..b58f0e3fca1f617f3ce64ec52d92cec960e716ae 100644 (file)
@@ -133,7 +133,25 @@ grub_normal_free_menu (grub_menu_t menu)
   while (entry)
     {
       grub_menu_entry_t next_entry = entry->next;
+      grub_size_t i;
 
+      if (entry->classes)
+       {
+         struct grub_menu_entry_class *class;
+         for (class = entry->classes; class; class = class->next)
+           grub_free (class->name);
+         grub_free (entry->classes);
+       }
+
+      if (entry->args)
+       {
+         for (i = 0; entry->args[i]; i++)
+           grub_free (entry->args[i]);
+         grub_free (entry->args);
+       }
+
+      grub_free ((void *) entry->id);
+      grub_free ((void *) entry->users);
       grub_free ((void *) entry->title);
       grub_free ((void *) entry->sourcecode);
       entry = next_entry;