summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNico Huber <nico.huber@secunet.com>2015-10-05 12:08:24 +0200
committerNico Huber <nico.h@gmx.de>2015-10-05 15:23:54 +0000
commitbda38eece8e90562aabf74b3be8663f02167a600 (patch)
tree8d8a2361f90d9d70aef229f4a67c39aa0ebbf792
parentb142b84afb2f870f68a16bac59568242ac04600f (diff)
libpayload: Check for CBFS_DEFAULT_MEDIA in cbfs_get_file_content()
The error-prone interface of cbfs_get_file_content() led to another possible NULL dereferencing. So check for CBFS_DEFAULT_MEDIA here like the other functions do. Change-Id: Ib8732160d389e9ecceb44f28be0e7de9a1d66e04 Signed-off-by: Nico Huber <nico.huber@secunet.com> Reviewed-on: http://review.coreboot.org/11796 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
-rw-r--r--payloads/libpayload/libcbfs/cbfs_core.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/payloads/libpayload/libcbfs/cbfs_core.c b/payloads/libpayload/libcbfs/cbfs_core.c
index 369d946f81..a4cb033c3b 100644
--- a/payloads/libpayload/libcbfs/cbfs_core.c
+++ b/payloads/libpayload/libcbfs/cbfs_core.c
@@ -191,6 +191,16 @@ struct cbfs_file *cbfs_get_file(struct cbfs_media *media, const char *name)
void *cbfs_get_file_content(struct cbfs_media *media, const char *name,
int type, size_t *sz)
{
+ struct cbfs_media default_media;
+
+ if (media == CBFS_DEFAULT_MEDIA) {
+ media = &default_media;
+ if (init_default_cbfs_media(media) != 0) {
+ ERROR("Failed to initialize default media.\n");
+ return NULL;
+ }
+ }
+
struct cbfs_file *file = cbfs_get_file(media, name);
if (sz)