From cb75a749b861b65701a38716d64fcd26239eaf40 Mon Sep 17 00:00:00 2001 From: rlar Date: Tue, 15 Apr 2014 19:13:47 +0200 Subject: [PATCH] lexical.c, avoid to read beyond end of `string' --- src/frontend/parser/lexical.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/frontend/parser/lexical.c b/src/frontend/parser/lexical.c index d3007e9aa..abaa21f5a 100644 --- a/src/frontend/parser/lexical.c +++ b/src/frontend/parser/lexical.c @@ -107,7 +107,13 @@ pwlist_echo(wordlist *wlist, char *name) static int cp_readchar(char **string, FILE *fptr) { - return (*string) ? *(*string)++ : input(fptr); + if (*string == NULL) + return input(fptr); + + if (**string) + return *(*string)++; + else + return '\n'; } @@ -143,12 +149,8 @@ nloop: c = cp_readchar(&string, cp_inp_cur); - if (string) { - if (c == '\0') - c = '\n'; - if (c == ESCAPE) - c = '['; - } + if (string && (c == ESCAPE)) + c = '['; gotchar: