From 88eeade0bcdba8beb4a94534312b8febbc608697 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Thu, 25 May 2023 15:47:23 +0100 Subject: 51739: detect invalid history word beginning --- ChangeLog | 4 ++++ Src/hist.c | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 0b2993f7d..1a703ec04 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2023-05-25 Peter Stephenson + + * 51739: Src/hist.c: detect invalid history word beginning. + 2023-05-21 Oliver Kiddle * 51769: Src/jobs.c, Src/utils.c: fix compilation when 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 */ -- cgit 1.4.1