loader/xnu: fix memory leak.
Foound by: Coverity scan.
This commit is contained in:
parent
11aae26cc3
commit
fbb4aa1c05
1 changed files with 7 additions and 6 deletions
|
@ -689,10 +689,10 @@ grub_xnu_load_driver (char *infoplistname, grub_file_t binaryfile,
|
||||||
/* Allocate the space. */
|
/* Allocate the space. */
|
||||||
err = grub_xnu_align_heap (GRUB_XNU_PAGESIZE);
|
err = grub_xnu_align_heap (GRUB_XNU_PAGESIZE);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
goto fail;
|
||||||
err = grub_xnu_heap_malloc (neededspace, &buf0, &buf_target);
|
err = grub_xnu_heap_malloc (neededspace, &buf0, &buf_target);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
goto fail;
|
||||||
buf = buf0;
|
buf = buf0;
|
||||||
|
|
||||||
exthead = (struct grub_xnu_extheader *) buf;
|
exthead = (struct grub_xnu_extheader *) buf;
|
||||||
|
@ -709,10 +709,7 @@ grub_xnu_load_driver (char *infoplistname, grub_file_t binaryfile,
|
||||||
else
|
else
|
||||||
err = grub_macho_readfile32 (macho, filename, buf);
|
err = grub_macho_readfile32 (macho, filename, buf);
|
||||||
if (err)
|
if (err)
|
||||||
{
|
goto fail;
|
||||||
grub_macho_close (macho);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
grub_macho_close (macho);
|
grub_macho_close (macho);
|
||||||
buf += machosize;
|
buf += machosize;
|
||||||
}
|
}
|
||||||
|
@ -747,6 +744,10 @@ grub_xnu_load_driver (char *infoplistname, grub_file_t binaryfile,
|
||||||
/* Announce to kernel */
|
/* Announce to kernel */
|
||||||
return grub_xnu_register_memory ("Driver-", &driversnum, buf_target,
|
return grub_xnu_register_memory ("Driver-", &driversnum, buf_target,
|
||||||
neededspace);
|
neededspace);
|
||||||
|
fail:
|
||||||
|
if (macho)
|
||||||
|
grub_macho_close (macho);
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load mkext. */
|
/* Load mkext. */
|
||||||
|
|
Loading…
Reference in a new issue