mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-05-04 20:26:13 +02: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:
parent
86acdce2ba
commit
ef305ceff9
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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user