From 8ece6a4f6490c7259636b52f1ab027944f4571e0 Mon Sep 17 00:00:00 2001 From: Přemysl Janouch Date: Thu, 31 Jul 2014 23:07:37 +0200 Subject: script: fix parse_word() With the `c > ' '` requirement we can't have an assertion for length in there. --- plugins/script | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/plugins/script b/plugins/script index c81aaa6..f725048 100755 --- a/plugins/script +++ b/plugins/script @@ -469,13 +469,16 @@ parse_word (struct tokenizer *self) struct buffer buf = BUFFER_INITIALIZER; char c; - // Here we accept almost anything that doesn't break the grammar... + // Here we accept almost anything that doesn't break the grammar while (!strchr (" []\"", (c = *self->cursor++)) && (unsigned char) c > ' ') buffer_append_c (&buf, c); self->cursor--; - // ...so an empty word can only mean a bug within our caller. - assert (buf.len != 0); + if (!buf.len) + { + self->error = "invalid input"; + return NULL; + } struct item *item = new_word (buf.s, buf.len); free (buf.s); -- cgit v1.2.3-70-g09d2