coreboot/util
Gabe Black b9f622a554 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 guarnateed to at least produce a
correct image.

BUG=chrome-os-partner:26060
TEST=Built for link and saw that a segment whos size had been set to 0 now has
the correct size and is loaded correctly. Booted into RW depthcharge which had
been broken before this change.
BRANCH=None

Change-Id: I5f59529c2d48e9c4c2e011018b40ec336c4fcca8
Signed-off-by: Gabe Black <gabeblack@google.com>
Reviewed-on: https://chromium-review.googlesource.com/187365
Reviewed-by: David Hendricks <dhendrix@chromium.org>
Tested-by: Gabe Black <gabeblack@chromium.org>
Commit-Queue: Gabe Black <gabeblack@chromium.org>
2014-02-25 05:13:54 +00:00
..
abuild ARM: Generalize armv7 as arm. 2013-10-02 09:18:44 +00:00
acpi GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
amdtools Since some people disapprove of white space cleanups mixed in regular commits 2010-04-27 06:56:47 +00:00
cbfstool cbfstool: If compression fails, warn and use the uncompressed data. 2014-02-25 05:13:54 +00:00
cbmem cbmem: print timestamp names 2013-08-19 12:23:28 -07:00
crossgcc crossgcc: Fix building with texinfo-5.x 2013-03-28 21:14:50 +01:00
dtd_parser GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
dumpmmcr dumpmmcr: Fix compilation warnings in printf 2012-01-26 09:57:56 +01:00
ectool GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
exynos exynos: Install the BL1 and set the checksum in the Makefile. 2013-12-10 03:26:39 +00:00
genprof Rename devices -> device 2012-11-30 23:59:58 +01:00
getpir GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
gitconfig gitconfig: Match the Change-Id line more exactly 2012-08-27 15:41:33 +02:00
i915tool GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
ifdtool ifdtool: Dump more registers from FD 2012-11-12 06:56:03 +01:00
inteltool inteltool: remove unused file descriptor variable and ifdefs 2013-04-08 18:17:59 +02:00
k8resdump GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
kconfig kconfig: add named choice group 2013-05-13 17:18:52 -07:00
lbtdump Since some people disapprove of white space cleanups mixed in regular commits 2010-04-27 06:56:47 +00:00
lint build system: Split linking into multiple steps 2012-11-27 22:02:02 +01:00
mkelfImage GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
mptable mptable: realign comments with code 2012-06-20 12:46:55 +02:00
msrtool GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
nrv2b Since some people disapprove of white space cleanups mixed in regular commits 2010-04-27 06:56:47 +00:00
nvramtool coreboot: add -MG to makefile to make it pass clang. 2013-08-12 17:24:32 -07:00
optionlist GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
resetcf Since some people disapprove of white space cleanups mixed in regular commits 2010-04-27 06:56:47 +00:00
romcc GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
runfw ARM: Generalize armv7 as arm. 2013-10-02 09:18:44 +00:00
sconfig sconfig: rename lapic_cluster -> cpu_cluster 2013-02-14 07:07:20 +01:00
scripts chromeos: add internal scripts to handle 3rdparty files 2013-04-12 13:18:10 -07:00
showdevicetree ARM: Generalize armv7 as arm. 2013-10-02 09:18:44 +00:00
superiotool libpayload, superiotool: README: Prepend coreboot/ to path of change directory line 2013-04-04 17:22:15 +02:00
vgabios Rename devices -> device 2012-11-30 23:59:58 +01:00
xcompile aarch64: Add support for the xcompile script 2014-02-21 05:31:13 +00:00