cmd: strings: interpret second argument as a byte count
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>
This commit is contained in:
committed by
Tom Rini
parent
bc61758cbc
commit
3c82b041f7
+1
-1
@@ -21,7 +21,7 @@ int do_strings(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
|
|||||||
if ((flag & CMD_FLAG_REPEAT) == 0) {
|
if ((flag & CMD_FLAG_REPEAT) == 0) {
|
||||||
start_addr = (char *)hextoul(argv[1], NULL);
|
start_addr = (char *)hextoul(argv[1], NULL);
|
||||||
if (argc > 2)
|
if (argc > 2)
|
||||||
last_addr = (char *)hextoul(argv[2], NULL);
|
last_addr = start_addr + hextoul(argv[2], NULL);
|
||||||
else
|
else
|
||||||
last_addr = (char *)-1;
|
last_addr = (char *)-1;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user