[PATCH 1/1] cmd: ximg: handle Z_BUF_ERROR explicitly in GZIP decompression
Aristo Chen
jj251510319013 at gmail.com
Thu May 8 21:37:24 CEST 2025
When decompressing GZIP-compressed image parts via the `imxtract` command,
explicitly handle the `Z_BUF_ERROR` return value from `gunzip()` to provide
a clearer diagnostic. This error typically indicates that the destination
buffer is too small to hold the uncompressed data.
Signed-off-by: Aristo Chen <aristo.chen at canonical.com>
---
cmd/ximg.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/cmd/ximg.c b/cmd/ximg.c
index 29d7c3279b3..0afa1bc6640 100644
--- a/cmd/ximg.c
+++ b/cmd/ximg.c
@@ -27,6 +27,7 @@
#include <asm/byteorder.h>
#include <asm/cache.h>
#include <asm/io.h>
+#include <u-boot/zlib.h>
static int
do_imgextract(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
@@ -206,9 +207,13 @@ do_imgextract(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
break;
#ifdef CONFIG_GZIP
case IH_COMP_GZIP:
+ int ret = 0;
printf(" Uncompressing part %d ... ", part);
- if (gunzip((void *) dest, unc_len,
- (uchar *) data, &len) != 0) {
+ ret = gunzip((void *)dest, unc_len, (uchar *)data, &len);
+ if (ret == Z_BUF_ERROR) {
+ puts("Image too large: increase CONFIG_SYS_XIMG_LEN\n");
+ return 1;
+ } else if (ret != 0) {
puts("GUNZIP ERROR - image not loaded\n");
return 1;
}
--
2.43.0
More information about the U-Boot
mailing list