summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2020-10-23 19:19:32 -0700
committerPatrick Georgi <pgeorgi@google.com>2020-11-25 09:16:45 +0000
commit105cdf562567e935d318673556b0e9f7b1ce9cf3 (patch)
tree11fcffcde8d0ff8ef163584c6d91a60faf110918
parentd87a84830e7ef3d9d2e2f6df614bef03d5becd55 (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.c6
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;
}