diff options
author | Stefan Reinauer <reinauer@chromium.org> | 2012-12-11 17:35:30 -0800 |
---|---|---|
committer | Ronald G. Minnich <rminnich@gmail.com> | 2012-12-12 06:05:39 +0100 |
commit | cf5aaaf1d25429fa6270c7d91a3e072dcf989079 (patch) | |
tree | 1ca61aa631c15e63bb5bf31f8319908788905dd0 | |
parent | 935a942e4abddb84e7e1ae60f8386a814d56db67 (diff) | |
download | coreboot-cf5aaaf1d25429fa6270c7d91a3e072dcf989079.tar.xz |
cbfstool: Catch failing parse_elf_to_payload()
Otherwise cbfstool will segfault if you try to add an x86
payload to an ARM image.
Change-Id: Ie468005ce9325a4f17c4f206c59f48e39d9338df
Signed-off-by: Stefan Reinauer <reinauer@google.com>
Reviewed-on: http://review.coreboot.org/2028
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
-rw-r--r-- | util/cbfstool/cbfstool.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/util/cbfstool/cbfstool.c b/util/cbfstool/cbfstool.c index 10b29de113..6b520628f1 100644 --- a/util/cbfstool/cbfstool.c +++ b/util/cbfstool/cbfstool.c @@ -106,7 +106,7 @@ static int cbfs_add(void) static int cbfs_add_payload(void) { - uint32_t filesize = 0; + int32_t filesize = 0; void *rom, *filedata, *cbfsfile; unsigned char *payload; @@ -136,6 +136,12 @@ static int cbfs_add_payload(void) } filesize = parse_elf_to_payload(filedata, &payload, rom_algo); + if (filesize <= 0) { + fprintf(stderr, "E: Adding payload '%s' failed.\n", + rom_filename); + free(rom); + return 1; + } cbfsfile = create_cbfs_file(rom_name, payload, &filesize, CBFS_COMPONENT_PAYLOAD, &rom_baseaddress); |