mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-02 09:46:37 +03:00
cmd: ximg: handle Z_BUF_ERROR explicitly in GZIP decompression
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@canonical.com> [trini: Rework to indent the whole case with { } due to not using the C23 extension] Signed-off-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
18
cmd/ximg.c
18
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,11 +207,18 @@ do_imgextract(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
|
||||
break;
|
||||
#ifdef CONFIG_GZIP
|
||||
case IH_COMP_GZIP:
|
||||
printf(" Uncompressing part %d ... ", part);
|
||||
if (gunzip((void *) dest, unc_len,
|
||||
(uchar *) data, &len) != 0) {
|
||||
puts("GUNZIP ERROR - image not loaded\n");
|
||||
return 1;
|
||||
{
|
||||
int ret = 0;
|
||||
printf(" Uncompressing part %d ... ", part);
|
||||
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;
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user