cmd: zip: Use map_sysmem() with buffers in the zip command

The current implementation casts an address to a pointer. Make it more
sandbox-friendly by using map_sysmem().

Use symbolic return value for the command while updating
the return value handling.

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
This commit is contained in:
Marek Vasut
2026-01-28 20:41:30 +01:00
committed by Tom Rini
parent f2c704c0e8
commit 3a76ba66ec

View File

@@ -7,12 +7,15 @@
#include <command.h>
#include <env.h>
#include <gzip.h>
#include <mapmem.h>
#include <vsprintf.h>
static int do_zip(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
{
unsigned long src, dst;
unsigned long src_len, dst_len = ~0UL;
void *srcp, *dstp;
int ret;
switch (argc) {
case 5:
@@ -27,13 +30,21 @@ static int do_zip(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
return cmd_usage(cmdtp);
}
if (gzip((void *) dst, &dst_len, (void *) src, src_len) != 0)
return 1;
srcp = map_sysmem(src, src_len);
dstp = map_sysmem(dst, dst_len);
ret = gzip(dstp, &dst_len, srcp, src_len);
unmap_sysmem(dstp);
unmap_sysmem(srcp);
if (ret)
return CMD_RET_FAILURE;
printf("Compressed size: %lu = 0x%lX\n", dst_len, dst_len);
env_set_hex("filesize", dst_len);
return 0;
return CMD_RET_SUCCESS;
}
U_BOOT_CMD(