diff options
author | Peter Stephenson <p.stephenson@samsung.com> | 2023-05-25 15:47:23 +0100 |
---|---|---|
committer | Peter Stephenson <p.stephenson@samsung.com> | 2023-05-25 15:47:23 +0100 |
commit | 88eeade0bcdba8beb4a94534312b8febbc608697 (patch) | |
tree | 41cfcb1b1bf965f97b0b9ab8cae0bfa2d3f7caeb /Src/hist.c | |
parent | f80ad32c3f4e6239d9d6853d14ff36e28154f075 (diff) | |
download | zsh-88eeade0bcdba8beb4a94534312b8febbc608697.tar.gz zsh-88eeade0bcdba8beb4a94534312b8febbc608697.tar.xz zsh-88eeade0bcdba8beb4a94534312b8febbc608697.zip |
51739: detect invalid history word beginning
Diffstat (limited to 'Src/hist.c')
-rw-r--r-- | Src/hist.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/Src/hist.c b/Src/hist.c index 82d03a840..7e6394406 100644 --- a/Src/hist.c +++ b/Src/hist.c @@ -1643,12 +1643,17 @@ hend(Eprog prog) void ihwbegin(int offset) { + int pos = hptr - chline + offset; if (stophist == 2 || (histactive & HA_INWORD) || (inbufflags & (INP_ALIAS|INP_HIST)) == INP_ALIAS) return; if (chwordpos%2) chwordpos--; /* make sure we're on a word start, not end */ - chwords[chwordpos++] = hptr - chline + offset; + DPUTS1(pos < 0, "History word position < 0 in %s", + dupstrpfx(chline, hptr-chline)); + if (pos < 0) + pos = 0; + chwords[chwordpos++] = pos; } /* Abort current history word, not needed */ |