[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