]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
util/setup: fix grub_util_path_list leak
authorAndrei Borzenkov <arvidjaar@gmail.com>
Sat, 9 Jan 2016 10:28:42 +0000 (13:28 +0300)
committerAndrei Borzenkov <arvidjaar@gmail.com>
Sat, 9 Jan 2016 10:55:18 +0000 (13:55 +0300)
Add helper grub_util_free_path_list and use it where appropriate.

Found by: Coverity scan.
CID: 73727

include/grub/util/resolve.h
util/grub-install-common.c
util/mkimage.c
util/resolve.c

index f42df32f9cea1dc72bcb35db1910f7281ebfdc9d..8923a6e6c711243a9e6b53de685d6e41395686c2 100644 (file)
@@ -31,5 +31,6 @@ struct grub_util_path_list *
 grub_util_resolve_dependencies (const char *prefix,
                                const char *dep_list_file,
                                char *modules[]);
+void grub_util_free_path_list (struct grub_util_path_list *path_list);
 
 #endif /* ! GRUB_UTIL_RESOLVE_HEADER */
index 25983089f90fedad106bb6cdaa9d254a5913dd45..452b230daedc3db0296cab014e89ddacf1c21347 100644 (file)
@@ -765,6 +765,8 @@ grub_install_copy_files (const char *src,
          grub_install_compress_file (srcf, dstf, 1);
          free (dstf);
        }
+
+      grub_util_free_path_list (path_list);
     }
 
   const char *pkglib_DATA[] = {"efiemu32.o", "efiemu64.o",
index dc40461853e012f6122a37a6f2f47c7063df17eb..c3365bbbdbd3eae0d424f560f380eb737ee1cc4c 100644 (file)
@@ -996,7 +996,7 @@ grub_install_generate_image (const char *dir, const char *prefix,
   size_t prefix_size = 0;
   char *kernel_path;
   size_t offset;
-  struct grub_util_path_list *path_list, *p, *next;
+  struct grub_util_path_list *path_list, *p;
   size_t bss_size;
   grub_uint64_t start_address;
   void *rel_section = 0;
@@ -1904,11 +1904,5 @@ grub_install_generate_image (const char *dir, const char *prefix,
   free (kernel_path);
   free (rel_section);
 
-  while (path_list)
-    {
-      next = path_list->next;
-      free ((void *) path_list->name);
-      free (path_list);
-      path_list = next;
-    }
+  grub_util_free_path_list (path_list);
 }
index 002bfbd720b642b03f382bd6e056adc547ebb57a..3e887d2ff7b07c727628f739028650f1fb3faf89 100644 (file)
@@ -271,3 +271,17 @@ grub_util_resolve_dependencies (const char *prefix,
     return prev;
   }
 }
+
+void
+grub_util_free_path_list (struct grub_util_path_list *path_list)
+{
+  struct grub_util_path_list *next;
+
+  while (path_list)
+    {
+      next = path_list->next;
+      free ((void *) path_list->name);
+      free (path_list);
+      path_list = next;
+    }
+}