diff options
author | Richard Spiegel <richard.spiegel@silverbackltd.com> | 2018-01-17 09:58:13 -0700 |
---|---|---|
committer | Martin Roth <martinroth@google.com> | 2018-01-23 20:10:52 +0000 |
commit | bff4545ccfdc8ac1ae9848881a85937bff8edb94 (patch) | |
tree | d1ee5846e296ecbc5abe095db53e3f686929976f /util/amdfwtool | |
parent | 8bd8cd3a222bb8d54fd2510728c87dc6909b287c (diff) |
util/amdfwtool/amdfwtool.c: Check for negative return
File open function <open()> will return -1 if there's any error. Check that
the return is greater or equal to 0 before using fstat(). Print error message
and exit if there's an error.
This fixes CIDs 1353018, 1353020, 1353027 and 1353028
BUG=b:72062481
TEST=Build no errors
Change-Id: I77d6973d1ad1eadb93922866e618038045be5937
Signed-off-by: Richard Spiegel <richard.spiegel@silverbackltd.com>
Reviewed-on: https://review.coreboot.org/23303
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'util/amdfwtool')
-rw-r--r-- | util/amdfwtool/amdfwtool.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/util/amdfwtool/amdfwtool.c b/util/amdfwtool/amdfwtool.c index 61c2a0587d..289d47a53e 100644 --- a/util/amdfwtool/amdfwtool.c +++ b/util/amdfwtool/amdfwtool.c @@ -292,6 +292,11 @@ static uint32_t integrate_firmwares(char *base, uint32_t pos, uint32_t *romsig, for (i = 0; fw_table[i].type != AMD_FW_INVALID; i++) { if (fw_table[i].filename != NULL) { fd = open(fw_table[i].filename, O_RDONLY); + if (fd < 0) { + printf("Error: %s\n", strerror(errno)); + free(base); + exit(1); + } fstat(fd, &fd_stat); switch (fw_table[i].type) { @@ -349,6 +354,11 @@ static uint32_t integrate_psp_firmwares(char *base, uint32_t pos, pspdir[4+4*i+0] = fw_table[i].type; fd = open(fw_table[i].filename, O_RDONLY); + if (fd < 0) { + printf("Error: %s\n", strerror(errno)); + free(base); + exit(1); + } fstat(fd, &fd_stat); pspdir[4+4*i+1] = (uint32_t)fd_stat.st_size; |