[coreboot-gerrit] Patch set updated for coreboot: cbfstool/cbfs_image: Fix resource leak for segs
Furquan Shaikh (furquan@google.com)
gerrit at coreboot.org
Fri Aug 5 17:29:03 CEST 2016
Furquan Shaikh (furquan at google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/16072
-gerrit
commit 8c895329449426dbe6056c9930c0e9208eb1de57
Author: Furquan Shaikh <furquan at google.com>
Date: Fri Aug 5 08:20:37 2016 -0700
cbfstool/cbfs_image: Fix resource leak for segs
Free segs whenever returning from cbfs_payload_make_elf()
Change-Id: I0dd722dd488723cecffe1f5621244bb0344056a6
Signed-off-by: Furquan Shaikh <furquan at google.com>
Found-by: Coverity Scan # 1361268
---
util/cbfstool/cbfs_image.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/util/cbfstool/cbfs_image.c b/util/cbfstool/cbfs_image.c
index 023f9cf..75e69df 100644
--- a/util/cbfstool/cbfs_image.c
+++ b/util/cbfstool/cbfs_image.c
@@ -1099,17 +1099,21 @@ static int cbfs_payload_make_elf(struct buffer *buff, uint32_t arch)
if (cbfs_payload_decompress(segs, buff, segments)) {
ERROR("Failed to decompress payload.\n");
+ free(segs);
return -1;
}
- if (init_elf_from_arch(&ehdr, arch))
+ if (init_elf_from_arch(&ehdr, arch)) {
+ free(segs);
return -1;
+ }
ehdr.e_entry = segs[segments-1].load_addr;
ew = elf_writer_init(&ehdr);
if (ew == NULL) {
ERROR("Unable to init ELF writer.\n");
+ free(segs);
return -1;
}
@@ -1159,6 +1163,7 @@ static int cbfs_payload_make_elf(struct buffer *buff, uint32_t arch)
if (elf_writer_add_section(ew, &shdr, &tbuff, name)) {
ERROR("Unable to add ELF section: %s\n", name);
elf_writer_destroy(ew);
+ free(segs);
return -1;
}
@@ -1184,6 +1189,7 @@ static int cbfs_payload_make_elf(struct buffer *buff, uint32_t arch)
if (elf_writer_serialize(ew, &elf_out)) {
ERROR("Unable to create ELF file from stage.\n");
elf_writer_destroy(ew);
+ free(segs);
return -1;
}
@@ -1193,6 +1199,7 @@ static int cbfs_payload_make_elf(struct buffer *buff, uint32_t arch)
elf_writer_destroy(ew);
+ free(segs);
return 0;
}
More information about the coreboot-gerrit
mailing list