commands/fileXX: Fix memory leak.

Found by: Coverity Scan.
This commit is contained in:
Vladimir Serbinenko 2015-01-24 20:50:35 +01:00
parent b04c6d32ce
commit 95a8c9182b

View file

@ -40,10 +40,10 @@ grub_file_check_netbsdXX (grub_elf_t elf)
return 0; return 0;
if (grub_file_seek (elf->file, elf->ehdr.ehdrXX.e_shoff) == (grub_off_t) -1) 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) 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); s = (Elf_Shdr *) ((char *) s0 + elf->ehdr.ehdrXX.e_shstrndx * shentsize);
stroff = s->sh_offset; 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_file_read (elf->file, name, sizeof (name)) != (grub_ssize_t) sizeof (name))
{ {
if (grub_errno) if (grub_errno)
return grub_errno; goto fail;
continue; continue;
} }
if (grub_memcmp (name, ".note.netbsd.ident", if (grub_memcmp (name, ".note.netbsd.ident",
sizeof(".note.netbsd.ident")) != 0) sizeof(".note.netbsd.ident")) != 0)
continue; continue;
grub_free (s0);
return 1; return 1;
} }
fail:
grub_free (s0);
return 0; return 0;
} }