summaryrefslogtreecommitdiffstats
path: root/payloads
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2016-08-12 12:50:42 -0700
committerJulius Werner <jwerner@chromium.org>2016-08-12 22:52:22 +0200
commit55ffccfbaea62c4c8e5a69c8956441758d657eb1 (patch)
tree884c260b9899af7e8087432b6748a132af2c18d1 /payloads
parent1b52e2596ed387790b94207f73ed25da3eeed7c1 (diff)
downloadcoreboot-55ffccfbaea62c4c8e5a69c8956441758d657eb1.tar.gz
coreboot-55ffccfbaea62c4c8e5a69c8956441758d657eb1.tar.bz2
coreboot-55ffccfbaea62c4c8e5a69c8956441758d657eb1.zip
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@chromium.org> Reviewed-on: https://review.coreboot.org/16207 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Diffstat (limited to 'payloads')
-rw-r--r--payloads/libpayload/libcbfs/cbfs_core.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/payloads/libpayload/libcbfs/cbfs_core.c b/payloads/libpayload/libcbfs/cbfs_core.c
index 7e660ce83c0c..91f2603446b1 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;
}