]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
cmd: strings: interpret second argument as a byte count
authorNaveen Kumar Chaudhary <naveen.osdev@gmail.com>
Fri, 10 Jul 2026 15:23:44 +0000 (20:53 +0530)
committerTom Rini <trini@konsulko.com>
Thu, 23 Jul 2026 21:15:48 +0000 (15:15 -0600)
The help text advertises "<addr> [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 <naveen.osdev@gmail.com>
cmd/strings.c

index beac2a6e6b3a59214999660296a25e1daf16268d..3727c00341a24a92adda81d696178fe328e75785 100644 (file)
@@ -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;
        }