Message ID | 1297431070-29533-1-git-send-email-wd@denx.de |
---|---|
State | Superseded |
Headers | show |
Hi Wolfgang, > - return !!gunzip((void *) dst, dst_len, (void *) src, &src_len); > + rc = gunzip((void *) dst, dst_len, (void *) src, &src_len); > + > + printf("Uncompressed size: %ld = 0x%lX\n", src_len, src_len); > + sprintf(buf, "%lX", src_len); > + setenv("filesize", buf); > + > + return !!rc; What about: if (rc) return rc; printf("Uncompressed size: %ld = 0x%lX\n", src_len, src_len); sprintf(buf, "%lX", src_len); setenv("filesize", buf); return 0; This will prevent printing and setting of bogus values when an invalid or overly large image is unzipped. Best, Peter
Dear Peter Tyser, In message <1297443439.965.1208.camel@petert> you wrote: > > > - return !!gunzip((void *) dst, dst_len, (void *) src, &src_len); > > + rc = gunzip((void *) dst, dst_len, (void *) src, &src_len); > > + > > + printf("Uncompressed size: %ld = 0x%lX\n", src_len, src_len); > > + sprintf(buf, "%lX", src_len); > > + setenv("filesize", buf); > > + > > + return !!rc; > > What about: > if (rc) > return rc; > > printf("Uncompressed size: %ld = 0x%lX\n", src_len, src_len); > sprintf(buf, "%lX", src_len); > setenv("filesize", buf); > > return 0; > > > This will prevent printing and setting of bogus values when an invalid > or overly large image is unzipped. Good point, will fix. Thanks! Best regards, Wolfgang Denk
diff --git a/common/cmd_mem.c b/common/cmd_mem.c index ccf420a..54e581a 100644 --- a/common/cmd_mem.c +++ b/common/cmd_mem.c @@ -1212,6 +1212,8 @@ int do_unzip ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { unsigned long src, dst; unsigned long src_len = ~0UL, dst_len = ~0UL; + int rc; + char buf[32]; switch (argc) { case 4: @@ -1225,7 +1227,13 @@ int do_unzip ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) return cmd_usage(cmdtp); } - return !!gunzip((void *) dst, dst_len, (void *) src, &src_len); + rc = gunzip((void *) dst, dst_len, (void *) src, &src_len); + + printf("Uncompressed size: %ld = 0x%lX\n", src_len, src_len); + sprintf(buf, "%lX", src_len); + setenv("filesize", buf); + + return !!rc; } #endif /* CONFIG_CMD_UNZIP */
The unzip command did not provide a way for the caller to get any information about the uncompressed size. To make it better usable in scripts, we now store the uncompressed size in the `filesize' variable, like we do when for example loading a file over the network or when reading it from a file system. Following that analogy, it is only consequent to also print the size. Signed-off-by: Wolfgang Denk <wd@denx.de> --- common/cmd_mem.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-)