From fbb4aa1c050162bef5478b5441abeeaefb4d94f2 Mon Sep 17 00:00:00 2001 From: Andrei Borzenkov Date: Tue, 27 Jan 2015 21:49:45 +0300 Subject: [PATCH] loader/xnu: fix memory leak. Foound by: Coverity scan. --- grub-core/loader/xnu.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/grub-core/loader/xnu.c b/grub-core/loader/xnu.c index bc89cdf6c..c9885b1bc 100644 --- a/grub-core/loader/xnu.c +++ b/grub-core/loader/xnu.c @@ -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. */ -- 2.47.2