]> git.ozlabs.org Git - petitboot/blobdiff - discover/grub2/grub2-lexer.l
discover/grub: Fix handling of empty strings
[petitboot] / discover / grub2 / grub2-lexer.l
index 52575e390713a3a6b1fe576a6fb0a76ae7abf0c0..81dc5fe8ac78678d883a8c8325ace472fe953fed 100644 (file)
@@ -23,6 +23,7 @@ void yyerror(struct grub2_parser *parser, const char *fmt, ...);
 
 WORD   [^{}|&$;<> \t\n'"#]+
 DELIM  [ \t]+
+BLANK  ["]{2}|[']{2}
 VARNAME ([[:alpha:]][_[:alnum:]]*|[0-9]|[\?@\*#])
 
 %%
@@ -52,6 +53,12 @@ VARNAME ([[:alpha:]][_[:alnum:]]*|[0-9]|[\?@\*#])
 "until"      return TOKEN_UTIL;
 "while"      return TOKEN_WHILE;
 
+ /* ignore quoted empty strings */
+{BLANK} {
+               yylval->word = create_word_text(yyget_extra(yyscanner), "");
+               yyget_extra(yyscanner)->inter_word = true;
+               return TOKEN_WORD;
+       }
  /* anything that's not a metachar: return as a plain word */
 {WORD} {
                yylval->word = create_word_text(yyget_extra(yyscanner), yytext);