]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
commands/fileXX: Fix memory leak.
authorVladimir Serbinenko <phcoder@gmail.com>
Sat, 24 Jan 2015 19:50:35 +0000 (20:50 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Sat, 24 Jan 2015 19:50:35 +0000 (20:50 +0100)
Found by: Coverity Scan.

grub-core/commands/fileXX.c

index 58e1094c68bfb5d1f35f7a35a5a94498b5c75376..7743f3e937116f85fb88b92ba8b7740c53a12636 100644 (file)
@@ -40,10 +40,10 @@ grub_file_check_netbsdXX (grub_elf_t elf)
     return 0;
 
   if (grub_file_seek (elf->file, elf->ehdr.ehdrXX.e_shoff) == (grub_off_t) -1)
-    return 0;
+    goto fail;
 
   if (grub_file_read (elf->file, s0, shsize) != (grub_ssize_t) shsize)
-    return 0;
+    goto fail;
 
   s = (Elf_Shdr *) ((char *) s0 + elf->ehdr.ehdrXX.e_shstrndx * shentsize);
   stroff = s->sh_offset;
@@ -59,13 +59,16 @@ grub_file_check_netbsdXX (grub_elf_t elf)
       if (grub_file_read (elf->file, name, sizeof (name)) != (grub_ssize_t) sizeof (name))
        {
          if (grub_errno)
-           return grub_errno;
+           goto fail;
          continue;
        }
       if (grub_memcmp (name, ".note.netbsd.ident",
                       sizeof(".note.netbsd.ident")) != 0)
        continue;
+      grub_free (s0);
       return 1;
     }
+ fail:
+  grub_free (s0);
   return 0;
 }