From a65c21eeb52103698555996eb541eae34a6c2adb Mon Sep 17 00:00:00 2001 From: Patrick Georgi Date: Sat, 9 Aug 2014 16:58:00 +0200 Subject: cbfstool: free stale memory The process probably terminates not much later, but in case anyone reuses the function in something with longer life-time, free unused resources. Change-Id: I10c471ee3d9dc9a3ebf08fe4605f223ea59b990e Found-by: Coverity Scan Signed-off-by: Patrick Georgi Reviewed-on: http://review.coreboot.org/6559 Tested-by: build bot (Jenkins) Reviewed-by: Edward O'Callaghan Reviewed-by: Stefan Reinauer --- util/cbfstool/elfheaders.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'util') diff --git a/util/cbfstool/elfheaders.c b/util/cbfstool/elfheaders.c index 5b5cf94276..71d34a9df5 100644 --- a/util/cbfstool/elfheaders.c +++ b/util/cbfstool/elfheaders.c @@ -281,8 +281,10 @@ phdr_read(const struct buffer *in, struct parsed_elf *pelf, /* Ensure the contents are valid within the elf file. */ if (check_size(in, phdr[i].p_offset, phdr[i].p_filesz, - "segment contents")) + "segment contents")) { + free(phdr); return -1; + } } pelf->phdr = phdr; @@ -422,6 +424,7 @@ static int strtab_read(const struct buffer *in, struct parsed_elf *pelf) buffer_splice(b, in, shdr->sh_offset, shdr->sh_size); if (check_size(in, shdr->sh_offset, buffer_size(b), "strtab")) { ERROR("STRTAB section not within bounds: %d\n", i); + free(b); return -1; } pelf->strtabs[i] = b; -- cgit v1.2.3