From: Naveen Kumar Chaudhary Date: Fri, 10 Jul 2026 15:23:44 +0000 (+0530) Subject: cmd: strings: interpret second argument as a byte count X-Git-Tag: v2026.10-rc1~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3c82b041f73fe804d9d464508ceb625a856a38a6;p=thirdparty%2Fu-boot.git cmd: strings: interpret second argument as a byte count The help text advertises " [byte count]" but do_strings() stores argv[2] directly into last_addr and the loop condition tests "addr < last_addr", i.e. it treats the value as an absolute end address. When invoked as documented (e.g. "strings 0x40000000 0x100") the loop condition fails immediately because the supplied count is far below start_addr, and the command prints nothing. Compute last_addr as start_addr + hextoul(argv[2], NULL) so the argument is used as a length in bytes, matching the help. The existing repeat-mode fixup (last_addr = addr + (last_addr - start_addr)) continues to preserve the same byte-count window across CMD_FLAG_REPEAT. Signed-off-by: Naveen Kumar Chaudhary --- diff --git a/cmd/strings.c b/cmd/strings.c index beac2a6e6b3..3727c00341a 100644 --- a/cmd/strings.c +++ b/cmd/strings.c @@ -21,7 +21,7 @@ int do_strings(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) if ((flag & CMD_FLAG_REPEAT) == 0) { start_addr = (char *)hextoul(argv[1], NULL); if (argc > 2) - last_addr = (char *)hextoul(argv[2], NULL); + last_addr = start_addr + hextoul(argv[2], NULL); else last_addr = (char *)-1; }