From 064853aa25f498aa7bc4554393a53240696813fa Mon Sep 17 00:00:00 2001 From: Christos Zoulas Date: Fri, 24 Jul 2020 13:49:21 -0400 Subject: [PATCH] Call seterror consistently and abort quickly (Jan Macku) --- sh.lex.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/sh.lex.c b/sh.lex.c index d7d0ac5..ecab059 100644 --- a/sh.lex.c +++ b/sh.lex.c @@ -182,8 +182,10 @@ lex(struct wordent *hp) wdp = new; wdp->word = word(parsehtime); parsehtime = 0; - if (enterhist && toolong++ > 10 * 1024) - stderror(ERR_LTOOLONG); + if (enterhist && toolong++ > 10 * 1024) { + seterror(ERR_LTOOLONG); + break; + } } while (wdp->word[0] != '\n'); cleanup_ignore(hp); cleanup_until(hp); @@ -300,8 +302,10 @@ word(int parsehtime) cleanup_push(&wbuf, Strbuf_cleanup); loop: - if (enterhist && toolong++ > 256 * 1024) + if (enterhist && toolong++ > 256 * 1024) { seterror(ERR_WTOOLONG); + goto ret; + } while ((c = getC(DOALL)) == ' ' || c == '\t') continue; if (cmap(c, _META | _ESC)) @@ -360,8 +364,10 @@ loop: c1 = 0; dolflg = DOALL; for (;;) { - if (enterhist && toolong++ > 256 * 1024) + if (enterhist && toolong++ > 256 * 1024) { seterror(ERR_WTOOLONG); + goto ret; + } if (c1) { if (c == c1) { c1 = 0; -- 2.25.4