[coreboot-gerrit] New patch to review for coreboot: libpayload: cbfs: Fix minor memory leak in some edge cases

Julius Werner (jwerner@chromium.org) gerrit at coreboot.org
Fri Aug 12 21:53:47 CEST 2016


Julius Werner (jwerner at chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/16207

-gerrit

commit e04a9af71488d8d10bbaf15afd57dfd482afc292
Author: Julius Werner <jwerner at chromium.org>
Date:   Fri Aug 12 12:50:42 2016 -0700

    libpayload: cbfs: Fix minor memory leak in some edge cases
    
    cbfs_get_handle() allocates memory for a handle and doesn't free it if
    it errors out later, leaving the memory permanently leaked. Fix.
    
    Change-Id: Ide198105ce3ad6237672ff152b4490c768909564
    Reported-by: Coverity
    Signed-off-by: Julius Werner <jwerner at chromium.org>
---
 payloads/libpayload/libcbfs/cbfs_core.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/payloads/libpayload/libcbfs/cbfs_core.c b/payloads/libpayload/libcbfs/cbfs_core.c
index 7e660ce..91f2603 100644
--- a/payloads/libpayload/libcbfs/cbfs_core.c
+++ b/payloads/libpayload/libcbfs/cbfs_core.c
@@ -148,6 +148,7 @@ struct cbfs_handle *cbfs_get_handle(struct cbfs_media *media, const char *name)
 
 	if (get_cbfs_range(&offset, &cbfs_end, media)) {
 		ERROR("Failed to find cbfs range\n");
+		free(handle);
 		return NULL;
 	}
 
@@ -155,6 +156,7 @@ struct cbfs_handle *cbfs_get_handle(struct cbfs_media *media, const char *name)
 		media = &handle->media;
 		if (init_default_cbfs_media(media) != 0) {
 			ERROR("Failed to initialize default media.\n");
+			free(handle);
 			return NULL;
 		}
 	} else {
@@ -215,6 +217,7 @@ struct cbfs_handle *cbfs_get_handle(struct cbfs_media *media, const char *name)
 	}
 	media->close(media);
 	LOG("WARNING: '%s' not found.\n", name);
+	free(handle);
 	return NULL;
 }
 



More information about the coreboot-gerrit mailing list