cbfs: Check return value of map() for error
The CBFS core checks the result of a media->map() operation in multiple places for CBFS_MEDIA_INVALID_MAP_ADDRESS, suggesting that this is a valid response. However, it ironically fails to do so when actually mapping the CBFS file itself, which can fail on buffer-constrained systems since the size is much larger than when mapping metadata. This patch adds a check with an error message and a NULL pointer return for that case to make it easier to understand this condition. BUG=None TEST=None Change-Id: Icae3dd20d3d111cdfc4f2dc6397b52174349b140 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/174951 Reviewed-by: Gabe Black <gabeblack@chromium.org> Reviewed-by: Hung-Te Lin <hungte@chromium.org>
This commit is contained in:
parent
6dbb4e5f0d
commit
63f2c4465f
1 changed files with 5 additions and 0 deletions
|
|
@ -167,6 +167,11 @@ struct cbfs_file *cbfs_get_file(struct cbfs_media *media, const char *name)
|
|||
file_ptr = media->map(media, offset,
|
||||
file_offset + file_len);
|
||||
media->close(media);
|
||||
if (file_ptr == CBFS_MEDIA_INVALID_MAP_ADDRESS) {
|
||||
ERROR("ERROR: Mapping %s failed (insufficient "
|
||||
"buffer space?).\n", file_name);
|
||||
return NULL;
|
||||
}
|
||||
return file_ptr;
|
||||
} else {
|
||||
DEBUG(" (unmatched file @0x%x: %s)\n", offset,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue