coreboot-kgpe-d16/util/cbfstool
Gabe Black 845aa1416d cbfstool: If compression fails, warn and use the uncompressed data.
The LZMA compression algorithm, currently the only one available, will fail
if you ask it to write more data to the output than you've given it space for.
The code that calls into LZMA allocates an output buffer the same size as the
input, so if compression increases the size of the output the call will fail.
The caller(s) were written to assume that the call succeeded and check the
returned length to see if the size would have increased, but that will never
happen with LZMA.

Rather than try to rework the LZMA library to dynamically resize the output
buffer or try to guess what the maximal size the data could expand to is, this
change makes the caller simply print a warning and disable compression if the
call failed for some reason.

This may lead to images that are larger than necessary if compression fails
for some other reason and the user doesn't notice, but since compression
errors were ignored entirely until very recently that will hopefully not be
a problem in practice, and we should be guaranteed to at least produce a
correct image.

Original-Change-Id: I5f59529c2d48e9c4c2e011018b40ec336c4fcca8
Original-Signed-off-by: Gabe Black <gabeblack@google.com>
Original-Reviewed-on: https://chromium-review.googlesource.com/187365
Original-Reviewed-by: David Hendricks <dhendrix@chromium.org>
Original-Tested-by: Gabe Black <gabeblack@chromium.org>
Original-Commit-Queue: Gabe Black <gabeblack@chromium.org>
(cherry picked from commit b9f622a554d5fb9a9aff839c64e11acb27785f13)
Signed-off-by: Isaac Christensen <isaac.christensen@se-eng.com>

Change-Id: I5f59529c2d48e9c4c2e011018b40ec336c4fcca8
Reviewed-on: http://review.coreboot.org/6958
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
2014-10-28 17:08:29 +01:00
..
lzma cbfstool: Propogate compression errors back to the caller. 2014-09-25 20:26:04 +02:00
EXAMPLE
Makefile utils/cbfstool: No need to pass -g flag twice 2014-06-29 04:16:49 +02:00
Makefile.inc build system: fix another cbfstool race 2014-07-15 14:27:04 +02:00
cbfs-mkpayload.c cbfstool: If compression fails, warn and use the uncompressed data. 2014-10-28 17:08:29 +01:00
cbfs-mkstage.c cbfstool: If compression fails, warn and use the uncompressed data. 2014-10-28 17:08:29 +01:00
cbfs-payload-linux.c cbfstool:linux_trampoline: config CS and DS segment descriptors 2014-09-04 23:34:32 +02:00
cbfs.h RISCV: add this architecture to cbfstool 2014-10-16 18:05:13 +02:00
cbfs_image.c cbfstool: Fix architecture check when adding payload 2014-09-12 22:07:19 +02:00
cbfs_image.h
cbfstool.c cbfstool: add aarch64 as a name 2014-09-15 19:00:12 +02:00
coff.h
common.c RISCV: add this architecture to cbfstool 2014-10-16 18:05:13 +02:00
common.h cbfstool: Propogate compression errors back to the caller. 2014-09-25 20:26:04 +02:00
compress.c cbfstool: Propogate compression errors back to the caller. 2014-09-25 20:26:04 +02:00
elf.h RISCV: add this architecture to cbfstool 2014-10-16 18:05:13 +02:00
elfheaders.c RISCV: add this architecture to cbfstool 2014-10-16 18:05:13 +02:00
elfparsing.h cbfstool: add ELF writing support 2014-03-18 18:59:25 +01:00
fit.c cbfstool: add eflparsing.h 2014-03-13 05:28:44 +01:00
fit.h
fv.h
linux.h cbfstool:linux_trampoline: config CS and DS segment descriptors 2014-09-04 23:34:32 +02:00
linux_trampoline.c cbfstool:linux_trampoline: config CS and DS segment descriptors 2014-09-04 23:34:32 +02:00
linux_trampoline.h cbfstool:linux_trampoline: config CS and DS segment descriptors 2014-09-04 23:34:32 +02:00
rmodtool.c util: add rmodtool for parsing ELF files to rmodules 2014-03-20 21:34:39 +01:00
rmodule.c rmodtool: Allow rmodules with 0 relocations 2014-09-23 22:26:57 +02:00
rmodule.h util: add rmodtool for parsing ELF files to rmodules 2014-03-20 21:34:39 +01:00
swab.h
xdr.c cbfstool: add bputs() to store a byte stream to a buffer 2014-03-11 19:43:17 +01:00