]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/loader/i386/bsd.c (grub_bsd_load): Handle relocator failure
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Mon, 27 Jun 2011 11:57:03 +0000 (13:57 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Mon, 27 Jun 2011 11:57:03 +0000 (13:57 +0200)
if it happens.

ChangeLog
grub-core/loader/i386/bsd.c

index 4cdbc2b157209a212d6984cd6d588c5d93fdc92f..c097af2f7573c3a298538838eec0d8ab982cfc3c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2011-06-27  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/loader/i386/bsd.c (grub_bsd_load): Handle relocator failure
+       if it happens.
+
 2011-06-27  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Implement time command.
index 6487dc3df3fdeff5855bdc8ae5fddd7b2e514cb5..dffe482579f19e2e1633a4e3d43b52d642da1662 100644 (file)
@@ -1322,6 +1322,11 @@ grub_bsd_load (int argc, char *argv[])
     goto fail;
 
   relocator = grub_relocator_new ();
+  if (!relocator)
+    {
+      grub_file_close (file);
+      goto fail;
+    }
 
   elf = grub_elf_file (file);
   if (elf)
@@ -1343,7 +1348,7 @@ grub_bsd_load (int argc, char *argv[])
 fail:
 
   if (grub_errno != GRUB_ERR_NONE)
-    grub_dl_unref (my_mod);
+    grub_dl_unref (my_mod);    
 
   return grub_errno;
 }