diff options
author | Gabe Black <gabeblack@google.com> | 2014-02-20 23:38:49 -0800 |
---|---|---|
committer | Isaac Christensen <isaac.christensen@se-eng.com> | 2014-09-25 20:26:04 +0200 |
commit | dbd006b0820098ab1bc042a16853db7131cf91af (patch) | |
tree | 7fbdb8b767be6e39c91dc86d5023894dc73072c1 /util/cbfstool/common.h | |
parent | 49c98dc42b706897e802af12d16349ff65a9bd43 (diff) | |
download | coreboot-dbd006b0820098ab1bc042a16853db7131cf91af.tar.xz |
cbfstool: Propogate compression errors back to the caller.
When compression fails for whatever reason, the caller should know about it
rather than blindly assuming it worked correctly. That can prevent half
compressed data from ending up in the image.
This is currently happening for a segment of depthcharge which is triggering
a failure in LZMA. The size of the "compressed" data is never set and is
recorded as zero, and that segment effectively isn't loaded during boot.
Change-Id: Idbff01f5413d030bbf5382712780bbd0b9e83bc7
Signed-off-by: Gabe Black <gabeblack@google.com>
Reviewed-on: https://chromium-review.googlesource.com/187364
Reviewed-by: Hung-Te Lin <hungte@chromium.org>
Tested-by: Gabe Black <gabeblack@chromium.org>
Commit-Queue: Gabe Black <gabeblack@chromium.org>
(cherry picked from commit be48f3e41eaf0eaf6686c61c439095fc56883cec)
Signed-off-by: Isaac Christensen <isaac.christensen@se-eng.com>
Reviewed-on: http://review.coreboot.org/6960
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Diffstat (limited to 'util/cbfstool/common.h')
-rw-r--r-- | util/cbfstool/common.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/util/cbfstool/common.h b/util/cbfstool/common.h index 455fb8b283..02a088b98d 100644 --- a/util/cbfstool/common.h +++ b/util/cbfstool/common.h @@ -117,7 +117,7 @@ uint32_t string_to_arch(const char *arch_string); #define ALIGN(val, by) (((val) + (by)-1)&~((by)-1)) -typedef void (*comp_func_ptr) (char *, int, char *, int *); +typedef int (*comp_func_ptr) (char *, int, char *, int *); typedef enum { CBFS_COMPRESS_NONE = 0, CBFS_COMPRESS_LZMA = 1 } comp_algo; comp_func_ptr compression_function(comp_algo algo); @@ -145,8 +145,8 @@ void print_supported_filetypes(void); #define ARRAY_SIZE(a) (int)(sizeof(a) / sizeof((a)[0])) /* lzma/lzma.c */ -void do_lzma_compress(char *in, int in_len, char *out, int *out_len); -void do_lzma_uncompress(char *dst, int dst_len, char *src, int src_len); +int do_lzma_compress(char *in, int in_len, char *out, int *out_len); +int do_lzma_uncompress(char *dst, int dst_len, char *src, int src_len); /* xdr.c */ struct xdr { uint8_t (*get8)(struct buffer *input); |