diff options
author | Julius Werner <jwerner@chromium.org> | 2020-10-23 19:19:32 -0700 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2020-11-25 09:16:45 +0000 |
commit | 105cdf562567e935d318673556b0e9f7b1ce9cf3 (patch) | |
tree | 11fcffcde8d0ff8ef163584c6d91a60faf110918 | |
parent | d87a84830e7ef3d9d2e2f6df614bef03d5becd55 (diff) |
cbfstool: Don't add compression attribute for uncompressed files
Our current cbfstool has always added a compression attribute to the
CBFS file header for all files that used the cbfstool_convert_raw()
function (basically anything other than a stage or payload), even if the
compression type was NONE. This was likely some sort of oversight, since
coreboot CBFS reading code has always accepted the absence of a
compression attribute to mean "no compression". This patch fixes the
behavior to avoid adding the attribute in these cases.
Change-Id: Ic4a41152db9df66376fa26096d6f3a53baea51de
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/46835
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
-rw-r--r-- | util/cbfstool/cbfstool.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/util/cbfstool/cbfstool.c b/util/cbfstool/cbfstool.c index d2df1cc008..c7a6079333 100644 --- a/util/cbfstool/cbfstool.c +++ b/util/cbfstool/cbfstool.c @@ -595,6 +595,9 @@ static int cbfstool_convert_raw(struct buffer *buffer, return -1; memcpy(compressed, buffer->data + 8, compressed_size); } else { + if (param.compression == CBFS_COMPRESS_NONE) + goto out; + compress = compression_function(param.compression); if (!compress) return -1; @@ -606,7 +609,7 @@ static int cbfstool_convert_raw(struct buffer *buffer, compressed, &compressed_size)) { WARN("Compression failed - disabled\n"); free(compressed); - return 0; + goto out; } } @@ -626,6 +629,7 @@ static int cbfstool_convert_raw(struct buffer *buffer, buffer->data = compressed; buffer->size = compressed_size; +out: header->len = htonl(buffer->size); return 0; } |