]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
nativedisk: fix memory leak
authorAndrei Borzenkov <arvidjaar@gmail.com>
Tue, 12 Jan 2016 17:37:43 +0000 (20:37 +0300)
committerAndrei Borzenkov <arvidjaar@gmail.com>
Tue, 12 Jan 2016 17:37:43 +0000 (20:37 +0300)
Based on Coverity scan.
CID: 96660

Extended to also cover other error return places.

grub-core/commands/nativedisk.c

index b3bc4639cb7b334ea456902f2a1d1afab42537d5..345f97c4d45207fc27dc0cd588d12f41155b33b9 100644 (file)
@@ -198,7 +198,10 @@ grub_cmd_nativedisk (grub_command_t cmd __attribute__ ((unused)),
     return grub_errno;
 
   if (get_uuid (NULL, &uuid_root, 0))
-    return grub_errno;
+    {
+      grub_free (mods);
+      return grub_errno;
+    }
 
   prefdev = grub_file_get_device_name (prefix);
   if (grub_errno)
@@ -210,6 +213,8 @@ grub_cmd_nativedisk (grub_command_t cmd __attribute__ ((unused)),
   if (get_uuid (prefdev, &uuid_prefix, 0))
     {
       grub_free (uuid_root);
+      grub_free (prefdev);
+      grub_free (mods);
       return grub_errno;
     }
 
@@ -289,12 +294,15 @@ grub_cmd_nativedisk (grub_command_t cmd __attribute__ ((unused)),
     }
   grub_free (uuid_root);
   grub_free (uuid_prefix);
+  grub_free (prefdev);
+  grub_free (mods);
 
   return GRUB_ERR_NONE;
 
  fail:
   grub_free (uuid_root);
   grub_free (uuid_prefix);
+  grub_free (prefdev);
 
   for (i = 0; i < mods_loaded; i++)
     if (mods[i])
@@ -302,6 +310,8 @@ grub_cmd_nativedisk (grub_command_t cmd __attribute__ ((unused)),
        mods[i]->fini = 0;
        grub_dl_unload (mods[i]);
       }
+  grub_free (mods);
+
   return grub_errno;
 }