From 3148bc1cbd9e440728b49004943b68235324752b Mon Sep 17 00:00:00 2001 From: phcoder Date: Mon, 15 Jun 2009 21:04:17 +0000 Subject: [PATCH] 2009-06-15 Vladimir Serbinenko Fix handling of string like \"hello\" and "a b" * script/sh/lexer.c (grub_script_yylex): fix parsing of quoting, escaping and newline --- script/sh/lexer.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/script/sh/lexer.c b/script/sh/lexer.c index f21430fe1..d3577d44c 100644 --- a/script/sh/lexer.c +++ b/script/sh/lexer.c @@ -156,18 +156,20 @@ grub_script_yylex (union YYSTYPE *yylval, struct grub_parser_param *parsestate) return token; } - for (;! state->done && (*state->script || firstrun); firstrun = 0) + for (;! state->done; firstrun = 0) { if (! *state->script) { /* Check if more tokens are requested by the parser. */ if (((state->refs && ! parsestate->err) - || state->state == GRUB_PARSER_STATE_ESC) + || state->state == GRUB_PARSER_STATE_ESC + || state->state == GRUB_PARSER_STATE_QUOTE + || state->state == GRUB_PARSER_STATE_DQUOTE) && state->getline) { int doexit = 0; - while (!state->script || ! grub_strlen (state->script)) + while (!state->script || ! *state->script) { grub_free (state->newscript); state->newscript = 0;