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>
This commit is contained in:
parent
1b52e2596e
commit
55ffccfbae
|
@ -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)) {
|
if (get_cbfs_range(&offset, &cbfs_end, media)) {
|
||||||
ERROR("Failed to find cbfs range\n");
|
ERROR("Failed to find cbfs range\n");
|
||||||
|
free(handle);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,6 +156,7 @@ struct cbfs_handle *cbfs_get_handle(struct cbfs_media *media, const char *name)
|
||||||
media = &handle->media;
|
media = &handle->media;
|
||||||
if (init_default_cbfs_media(media) != 0) {
|
if (init_default_cbfs_media(media) != 0) {
|
||||||
ERROR("Failed to initialize default media.\n");
|
ERROR("Failed to initialize default media.\n");
|
||||||
|
free(handle);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -215,6 +217,7 @@ struct cbfs_handle *cbfs_get_handle(struct cbfs_media *media, const char *name)
|
||||||
}
|
}
|
||||||
media->close(media);
|
media->close(media);
|
||||||
LOG("WARNING: '%s' not found.\n", name);
|
LOG("WARNING: '%s' not found.\n", name);
|
||||||
|
free(handle);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue