fix and testcase for \$ in grub script dquote strings
This commit is contained in:
parent
4b0cd8f813
commit
4e6da157dd
2 changed files with 10 additions and 6 deletions
|
@ -65,6 +65,9 @@ grub_script_blanklines_SOURCES = tests/grub_script_blanklines.in
|
||||||
check_SCRIPTS += grub_script_final_semicolon
|
check_SCRIPTS += grub_script_final_semicolon
|
||||||
grub_script_final_semicolon_SOURCES = tests/grub_script_final_semicolon.in
|
grub_script_final_semicolon_SOURCES = tests/grub_script_final_semicolon.in
|
||||||
|
|
||||||
|
check_SCRIPTS += grub_script_dollar
|
||||||
|
grub_script_dollar_SOURCES = tests/grub_script_dollar.in
|
||||||
|
|
||||||
# List of tests to execute on "make check"
|
# List of tests to execute on "make check"
|
||||||
# SCRIPTED_TESTS = example_scripted_test
|
# SCRIPTED_TESTS = example_scripted_test
|
||||||
# SCRIPTED_TESTS += example_grub_script_test
|
# SCRIPTED_TESTS += example_grub_script_test
|
||||||
|
@ -79,7 +82,7 @@ SCRIPTED_TESTS += grub_script_while1
|
||||||
SCRIPTED_TESTS += grub_script_if
|
SCRIPTED_TESTS += grub_script_if
|
||||||
SCRIPTED_TESTS += grub_script_blanklines
|
SCRIPTED_TESTS += grub_script_blanklines
|
||||||
SCRIPTED_TESTS += grub_script_final_semicolon
|
SCRIPTED_TESTS += grub_script_final_semicolon
|
||||||
|
SCRIPTED_TESTS += grub_script_dollar
|
||||||
|
|
||||||
# dependencies between tests and testing-tools
|
# dependencies between tests and testing-tools
|
||||||
$(SCRIPTED_TESTS): grub-shell grub-shell-tester
|
$(SCRIPTED_TESTS): grub-shell grub-shell-tester
|
||||||
|
|
|
@ -211,7 +211,7 @@ WORD ({CHAR}|{DQSTR}|{SQSTR}|{ESC}|{VARIABLE})+
|
||||||
ARG (GRUB_SCRIPT_ARG_TYPE_TEXT);
|
ARG (GRUB_SCRIPT_ARG_TYPE_TEXT);
|
||||||
}
|
}
|
||||||
\\ |
|
\\ |
|
||||||
[^\"\'$\\]+ { COPY (yytext, yyleng); }
|
[^\"\'\$\\]+ { COPY (yytext, yyleng); }
|
||||||
<<EOF>> {
|
<<EOF>> {
|
||||||
yy_pop_state (yyscanner);
|
yy_pop_state (yyscanner);
|
||||||
yypop_buffer_state (yyscanner);
|
yypop_buffer_state (yyscanner);
|
||||||
|
@ -254,6 +254,11 @@ WORD ({CHAR}|{DQSTR}|{SQSTR}|{ESC}|{VARIABLE})+
|
||||||
}
|
}
|
||||||
|
|
||||||
<DQUOTE>{
|
<DQUOTE>{
|
||||||
|
\\\$ { COPY ("$", 1); }
|
||||||
|
\\\\ { COPY ("\\", 1); }
|
||||||
|
\\\" { COPY ("\"", 1); }
|
||||||
|
\\\n { /* ignore */ }
|
||||||
|
[^\"\$\\\n]+ { COPY (yytext, yyleng); }
|
||||||
\" {
|
\" {
|
||||||
yy_pop_state (yyscanner);
|
yy_pop_state (yyscanner);
|
||||||
ARG (GRUB_SCRIPT_ARG_TYPE_DQSTR);
|
ARG (GRUB_SCRIPT_ARG_TYPE_DQSTR);
|
||||||
|
@ -262,10 +267,6 @@ WORD ({CHAR}|{DQSTR}|{SQSTR}|{ESC}|{VARIABLE})+
|
||||||
yy_push_state (VAR, yyscanner);
|
yy_push_state (VAR, yyscanner);
|
||||||
ARG (GRUB_SCRIPT_ARG_TYPE_DQSTR);
|
ARG (GRUB_SCRIPT_ARG_TYPE_DQSTR);
|
||||||
}
|
}
|
||||||
\\\\ { COPY ("\\", 1); }
|
|
||||||
\\\" { COPY ("\"", 1); }
|
|
||||||
\\\n { /* ignore */ }
|
|
||||||
[^\"$\\\n]+ { COPY (yytext, yyleng); }
|
|
||||||
(.|\n) { COPY (yytext, yyleng); }
|
(.|\n) { COPY (yytext, yyleng); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue