]> git.proxmox.com Git - grub2.git/commitdiff
loader/xnu: fix memory leak.
authorAndrei Borzenkov <arvidjaar@gmail.com>
Tue, 27 Jan 2015 18:49:45 +0000 (21:49 +0300)
committerAndrei Borzenkov <arvidjaar@gmail.com>
Tue, 27 Jan 2015 19:12:06 +0000 (22:12 +0300)
Foound by: Coverity scan.

grub-core/loader/xnu.c

index bc89cdf6c601e0336c9a1973c9906884446472c7..c9885b1bcd7304785eab07e020208fc833732bc9 100644 (file)
@@ -689,10 +689,10 @@ grub_xnu_load_driver (char *infoplistname, grub_file_t binaryfile,
   /* Allocate the space. */
   err = grub_xnu_align_heap (GRUB_XNU_PAGESIZE);
   if (err)
-    return err;
+    goto fail;
   err = grub_xnu_heap_malloc (neededspace, &buf0, &buf_target);
   if (err)
-    return err;
+    goto fail;
   buf = buf0;
 
   exthead = (struct grub_xnu_extheader *) buf;
@@ -709,10 +709,7 @@ grub_xnu_load_driver (char *infoplistname, grub_file_t binaryfile,
       else
        err = grub_macho_readfile32 (macho, filename, buf);
       if (err)
-       {
-         grub_macho_close (macho);
-         return err;
-       }
+       goto fail;
       grub_macho_close (macho);
       buf += machosize;
     }
@@ -747,6 +744,10 @@ grub_xnu_load_driver (char *infoplistname, grub_file_t binaryfile,
   /* Announce to kernel */
   return grub_xnu_register_memory ("Driver-", &driversnum, buf_target,
                                   neededspace);
+fail:
+  if (macho)
+    grub_macho_close (macho);
+  return err;
 }
 
 /* Load mkext. */