archive_read_support_filter_xz returns a warning when
compression is not fully supported and is supported
through external program. This warning can be ignored
when reading the files through firmware open as only
decompression is required.
Fixes: 40edb9c0d36b ("eal: handle compressed firmware")
Cc: [email protected]
Signed-off-by: Srikanth Yalavarthi <[email protected]>
---
lib/eal/unix/eal_firmware.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/lib/eal/unix/eal_firmware.c b/lib/eal/unix/eal_firmware.c
index d1616b0bd9..05c06c222a 100644
--- a/lib/eal/unix/eal_firmware.c
+++ b/lib/eal/unix/eal_firmware.c
@@ -25,12 +25,19 @@ static int
firmware_open(struct firmware_read_ctx *ctx, const char *name, size_t
blocksize)
{
struct archive_entry *e;
+ int err;
ctx->a = archive_read_new();
if (ctx->a == NULL)
return -1;
+
+ err = archive_read_support_filter_xz(ctx->a);
+ if (err != ARCHIVE_OK && err != ARCHIVE_WARN) {
+ ctx->a = NULL;
+ return -1;
+ }
+
if (archive_read_support_format_raw(ctx->a) != ARCHIVE_OK ||
- archive_read_support_filter_xz(ctx->a) != ARCHIVE_OK ||
archive_read_open_filename(ctx->a, name, blocksize) !=
ARCHIVE_OK ||
archive_read_next_header(ctx->a, &e) != ARCHIVE_OK) {
archive_read_free(ctx->a);
--
2.41.0