diff options
| author | Naveen Kumar Chaudhary <[email protected]> | 2026-07-10 20:53:44 +0530 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2026-07-23 15:15:48 -0600 |
| commit | 3c82b041f73fe804d9d464508ceb625a856a38a6 (patch) | |
| tree | ecb93cecca7e46b9dca4890e784b2002aaa7f6e9 | |
| parent | bc61758cbce38921310f668854bb8047f06c8c01 (diff) | |
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 <[email protected]>
| -rw-r--r-- | cmd/strings.c | 2 |
1 files changed, 1 insertions, 1 deletions
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; } |
