mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-14 02:08:27 +08:00
cmListFileLexer: Handle null character in the grammar
This commit is contained in:
@@ -576,16 +576,16 @@ struct yy_trans_info
|
||||
flex_int32_t yy_verify;
|
||||
flex_int32_t yy_nxt;
|
||||
};
|
||||
static const flex_int16_t yy_accept[79] =
|
||||
static const flex_int16_t yy_accept[77] =
|
||||
{ 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 4, 4,
|
||||
25, 13, 22, 1, 16, 3, 13, 5, 6, 7,
|
||||
15, 23, 23, 17, 19, 20, 21, 24, 10, 11,
|
||||
8, 12, 9, 4, 13, 0, 13, 0, 22, 0,
|
||||
0, 7, 13, 0, 13, 0, 2, 0, 13, 17,
|
||||
0, 18, 10, 8, 4, 0, 14, 0, 0, 0,
|
||||
0, 14, 0, 0, 14, 0, 0, 0, 2, 14,
|
||||
0, 0, 0, 0, 0, 0, 0, 0
|
||||
15, 23, 17, 19, 20, 21, 10, 11, 8, 12,
|
||||
9, 4, 13, 0, 13, 0, 22, 0, 0, 7,
|
||||
13, 0, 13, 0, 2, 0, 13, 17, 0, 18,
|
||||
10, 8, 4, 0, 14, 0, 0, 0, 0, 14,
|
||||
0, 0, 14, 0, 0, 0, 2, 14, 0, 0,
|
||||
0, 0, 0, 0, 0, 0
|
||||
} ;
|
||||
|
||||
static const YY_CHAR yy_ec[256] =
|
||||
@@ -620,118 +620,104 @@ static const YY_CHAR yy_ec[256] =
|
||||
1, 1, 1, 1, 1
|
||||
} ;
|
||||
|
||||
static const YY_CHAR yy_meta[17] =
|
||||
static const YY_CHAR yy_meta[16] =
|
||||
{ 0,
|
||||
1, 1, 2, 3, 4, 3, 1, 3, 5, 6,
|
||||
1, 6, 1, 1, 7, 2
|
||||
1, 6, 1, 1, 7
|
||||
} ;
|
||||
|
||||
static const flex_int16_t yy_base[97] =
|
||||
static const flex_int16_t yy_base[95] =
|
||||
{ 0,
|
||||
0, 0, 14, 28, 42, 56, 70, 84, 18, 19,
|
||||
68, 100, 16, 298, 298, 54, 58, 298, 298, 13,
|
||||
115, 0, 298, 51, 298, 298, 21, 298, 0, 298,
|
||||
53, 298, 298, 0, 0, 126, 55, 0, 25, 25,
|
||||
53, 0, 0, 136, 53, 0, 57, 0, 0, 42,
|
||||
50, 298, 0, 43, 0, 146, 160, 45, 172, 43,
|
||||
26, 0, 42, 177, 0, 42, 188, 40, 298, 40,
|
||||
0, 38, 37, 34, 32, 31, 23, 298, 197, 204,
|
||||
211, 218, 225, 232, 239, 245, 252, 259, 262, 268,
|
||||
275, 278, 280, 286, 289, 291
|
||||
0, 0, 13, 25, 14, 16, 17, 18, 90, 88,
|
||||
88, 39, 20, 237, 237, 74, 78, 237, 237, 13,
|
||||
54, 0, 71, 237, 237, 31, 0, 237, 73, 237,
|
||||
237, 0, 0, 65, 75, 0, 33, 30, 72, 0,
|
||||
0, 75, 70, 0, 74, 0, 0, 62, 70, 237,
|
||||
0, 63, 0, 85, 99, 65, 111, 62, 34, 0,
|
||||
54, 116, 0, 54, 127, 51, 237, 50, 0, 48,
|
||||
47, 39, 33, 29, 17, 237, 136, 143, 150, 157,
|
||||
164, 171, 178, 184, 191, 198, 201, 207, 214, 217,
|
||||
219, 225, 228, 230
|
||||
|
||||
} ;
|
||||
|
||||
static const flex_int16_t yy_def[97] =
|
||||
static const flex_int16_t yy_def[95] =
|
||||
{ 0,
|
||||
78, 1, 79, 79, 80, 80, 81, 81, 82, 82,
|
||||
78, 78, 78, 78, 78, 78, 12, 78, 78, 12,
|
||||
78, 83, 78, 84, 78, 78, 84, 78, 85, 78,
|
||||
78, 78, 78, 86, 12, 87, 12, 88, 78, 78,
|
||||
89, 20, 12, 90, 12, 21, 78, 91, 12, 84,
|
||||
84, 78, 85, 78, 86, 87, 78, 56, 87, 92,
|
||||
78, 57, 89, 90, 57, 64, 90, 93, 78, 57,
|
||||
94, 95, 92, 96, 93, 95, 96, 0, 78, 78,
|
||||
78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
|
||||
78, 78, 78, 78, 78, 78
|
||||
76, 1, 77, 77, 78, 78, 79, 79, 80, 80,
|
||||
76, 76, 76, 76, 76, 76, 12, 76, 76, 12,
|
||||
76, 81, 82, 76, 76, 82, 83, 76, 76, 76,
|
||||
76, 84, 12, 85, 12, 86, 76, 76, 87, 20,
|
||||
12, 88, 12, 21, 76, 89, 12, 82, 82, 76,
|
||||
83, 76, 84, 85, 76, 54, 85, 90, 76, 55,
|
||||
87, 88, 55, 62, 88, 91, 76, 55, 92, 93,
|
||||
90, 94, 91, 93, 94, 0, 76, 76, 76, 76,
|
||||
76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
|
||||
76, 76, 76, 76
|
||||
|
||||
} ;
|
||||
|
||||
static const flex_int16_t yy_nxt[315] =
|
||||
static const flex_int16_t yy_nxt[253] =
|
||||
{ 0,
|
||||
12, 13, 14, 13, 15, 16, 17, 18, 19, 12,
|
||||
12, 20, 21, 22, 12, 23, 25, 39, 26, 39,
|
||||
14, 14, 42, 52, 42, 50, 39, 27, 39, 28,
|
||||
25, 64, 26, 28, 28, 61, 61, 47, 47, 56,
|
||||
65, 27, 64, 28, 30, 57, 56, 60, 65, 74,
|
||||
62, 57, 72, 54, 50, 51, 31, 28, 30, 69,
|
||||
68, 62, 60, 54, 51, 41, 40, 78, 78, 78,
|
||||
31, 28, 30, 78, 78, 78, 78, 78, 78, 78,
|
||||
78, 78, 78, 78, 33, 28, 30, 78, 78, 78,
|
||||
78, 78, 78, 78, 78, 78, 78, 78, 33, 28,
|
||||
12, 20, 21, 22, 12, 24, 28, 25, 28, 28,
|
||||
28, 37, 40, 37, 40, 62, 26, 24, 29, 25,
|
||||
29, 31, 31, 50, 37, 48, 37, 54, 26, 33,
|
||||
59, 63, 45, 34, 59, 35, 45, 62, 33, 33,
|
||||
33, 33, 36, 33, 41, 55, 54, 58, 42, 63,
|
||||
43, 72, 60, 41, 44, 41, 45, 46, 41, 55,
|
||||
55, 56, 70, 52, 48, 49, 67, 66, 57, 63,
|
||||
60, 64, 58, 52, 49, 39, 38, 76, 65, 55,
|
||||
14, 56, 14, 76, 76, 76, 76, 76, 57, 55,
|
||||
|
||||
35, 78, 78, 78, 36, 78, 37, 78, 78, 35,
|
||||
35, 35, 35, 38, 35, 43, 78, 78, 78, 44,
|
||||
78, 45, 78, 78, 43, 46, 43, 47, 48, 43,
|
||||
57, 78, 58, 78, 78, 78, 78, 78, 78, 59,
|
||||
65, 78, 66, 78, 78, 78, 78, 78, 78, 67,
|
||||
57, 78, 58, 78, 78, 78, 78, 78, 78, 59,
|
||||
57, 78, 78, 78, 36, 78, 70, 78, 78, 57,
|
||||
57, 57, 57, 71, 57, 56, 78, 56, 78, 56,
|
||||
56, 65, 78, 66, 78, 78, 78, 78, 78, 78,
|
||||
67, 64, 78, 64, 78, 64, 64, 24, 24, 24,
|
||||
76, 76, 76, 34, 76, 68, 76, 76, 55, 55,
|
||||
55, 55, 69, 55, 54, 76, 54, 76, 54, 54,
|
||||
63, 76, 64, 76, 76, 76, 76, 76, 76, 65,
|
||||
62, 76, 62, 76, 62, 62, 23, 23, 23, 23,
|
||||
23, 23, 23, 27, 27, 27, 27, 27, 27, 27,
|
||||
30, 30, 30, 30, 30, 30, 30, 32, 32, 32,
|
||||
32, 32, 32, 32, 47, 76, 47, 47, 47, 47,
|
||||
47, 48, 76, 48, 76, 48, 48, 48, 51, 76,
|
||||
51, 51, 51, 51, 53, 76, 53, 53, 53, 53,
|
||||
53, 54, 76, 76, 54, 76, 54, 54, 33, 76,
|
||||
|
||||
24, 24, 24, 24, 29, 29, 29, 29, 29, 29,
|
||||
29, 32, 32, 32, 32, 32, 32, 32, 34, 34,
|
||||
34, 34, 34, 34, 34, 49, 78, 49, 49, 49,
|
||||
49, 49, 50, 78, 50, 78, 50, 50, 50, 53,
|
||||
78, 53, 53, 53, 53, 55, 78, 55, 55, 55,
|
||||
55, 55, 56, 78, 78, 56, 78, 56, 56, 35,
|
||||
78, 35, 35, 35, 35, 35, 63, 63, 64, 78,
|
||||
78, 64, 78, 64, 64, 43, 78, 43, 43, 43,
|
||||
43, 43, 73, 73, 75, 75, 57, 78, 57, 57,
|
||||
57, 57, 57, 76, 76, 77, 77, 11, 78, 78,
|
||||
|
||||
78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
|
||||
78, 78, 78, 78
|
||||
33, 33, 33, 33, 33, 61, 61, 62, 76, 76,
|
||||
62, 76, 62, 62, 41, 76, 41, 41, 41, 41,
|
||||
41, 71, 71, 73, 73, 55, 76, 55, 55, 55,
|
||||
55, 55, 74, 74, 75, 75, 11, 76, 76, 76,
|
||||
76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
|
||||
76, 76
|
||||
} ;
|
||||
|
||||
static const flex_int16_t yy_chk[315] =
|
||||
static const flex_int16_t yy_chk[253] =
|
||||
{ 0,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 3, 13, 3, 13,
|
||||
9, 10, 20, 27, 20, 27, 39, 3, 39, 3,
|
||||
4, 77, 4, 9, 10, 40, 61, 40, 61, 76,
|
||||
75, 4, 74, 4, 5, 73, 72, 70, 68, 66,
|
||||
63, 60, 58, 54, 51, 50, 5, 5, 6, 47,
|
||||
45, 41, 37, 31, 24, 17, 16, 11, 0, 0,
|
||||
6, 6, 7, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 7, 7, 8, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 8, 8,
|
||||
1, 1, 1, 1, 1, 3, 5, 3, 6, 7,
|
||||
8, 13, 20, 13, 20, 75, 3, 4, 5, 4,
|
||||
6, 7, 8, 26, 37, 26, 37, 74, 4, 12,
|
||||
38, 73, 38, 12, 59, 12, 59, 72, 12, 12,
|
||||
12, 12, 12, 12, 21, 71, 70, 68, 21, 66,
|
||||
21, 64, 61, 21, 21, 21, 21, 21, 21, 34,
|
||||
58, 34, 56, 52, 49, 48, 45, 43, 34, 42,
|
||||
39, 42, 35, 29, 23, 17, 16, 11, 42, 54,
|
||||
10, 54, 9, 0, 0, 0, 0, 0, 54, 55,
|
||||
|
||||
12, 0, 0, 0, 12, 0, 12, 0, 0, 12,
|
||||
12, 12, 12, 12, 12, 21, 0, 0, 0, 21,
|
||||
0, 21, 0, 0, 21, 21, 21, 21, 21, 21,
|
||||
36, 0, 36, 0, 0, 0, 0, 0, 0, 36,
|
||||
44, 0, 44, 0, 0, 0, 0, 0, 0, 44,
|
||||
56, 0, 56, 0, 0, 0, 0, 0, 0, 56,
|
||||
57, 0, 0, 0, 57, 0, 57, 0, 0, 57,
|
||||
57, 57, 57, 57, 57, 59, 0, 59, 0, 59,
|
||||
59, 64, 0, 64, 0, 0, 0, 0, 0, 0,
|
||||
64, 67, 0, 67, 0, 67, 67, 79, 79, 79,
|
||||
0, 0, 0, 55, 0, 55, 0, 0, 55, 55,
|
||||
55, 55, 55, 55, 57, 0, 57, 0, 57, 57,
|
||||
62, 0, 62, 0, 0, 0, 0, 0, 0, 62,
|
||||
65, 0, 65, 0, 65, 65, 77, 77, 77, 77,
|
||||
77, 77, 77, 78, 78, 78, 78, 78, 78, 78,
|
||||
79, 79, 79, 79, 79, 79, 79, 80, 80, 80,
|
||||
80, 80, 80, 80, 81, 0, 81, 81, 81, 81,
|
||||
81, 82, 0, 82, 0, 82, 82, 82, 83, 0,
|
||||
83, 83, 83, 83, 84, 0, 84, 84, 84, 84,
|
||||
84, 85, 0, 0, 85, 0, 85, 85, 86, 0,
|
||||
|
||||
79, 79, 79, 79, 80, 80, 80, 80, 80, 80,
|
||||
80, 81, 81, 81, 81, 81, 81, 81, 82, 82,
|
||||
82, 82, 82, 82, 82, 83, 0, 83, 83, 83,
|
||||
83, 83, 84, 0, 84, 0, 84, 84, 84, 85,
|
||||
0, 85, 85, 85, 85, 86, 0, 86, 86, 86,
|
||||
86, 86, 87, 0, 0, 87, 0, 87, 87, 88,
|
||||
0, 88, 88, 88, 88, 88, 89, 89, 90, 0,
|
||||
0, 90, 0, 90, 90, 91, 0, 91, 91, 91,
|
||||
91, 91, 92, 92, 93, 93, 94, 0, 94, 94,
|
||||
94, 94, 94, 95, 95, 96, 96, 78, 78, 78,
|
||||
|
||||
78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
|
||||
78, 78, 78, 78
|
||||
86, 86, 86, 86, 86, 87, 87, 88, 0, 0,
|
||||
88, 0, 88, 88, 89, 0, 89, 89, 89, 89,
|
||||
89, 90, 90, 91, 91, 92, 0, 92, 92, 92,
|
||||
92, 92, 93, 93, 94, 94, 76, 76, 76, 76,
|
||||
76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
|
||||
76, 76
|
||||
} ;
|
||||
|
||||
/* Table of booleans, true if rule could match eol. */
|
||||
@@ -1089,13 +1075,13 @@ yy_match:
|
||||
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||||
{
|
||||
yy_current_state = (int) yy_def[yy_current_state];
|
||||
if ( yy_current_state >= 79 )
|
||||
if ( yy_current_state >= 77 )
|
||||
yy_c = yy_meta[yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
|
||||
++yy_cp;
|
||||
}
|
||||
while ( yy_base[yy_current_state] != 298 );
|
||||
while ( yy_base[yy_current_state] != 237 );
|
||||
|
||||
yy_find_action:
|
||||
yy_act = yy_accept[yy_current_state];
|
||||
@@ -1178,6 +1164,9 @@ YY_RULE_SETUP
|
||||
case 4:
|
||||
YY_RULE_SETUP
|
||||
{
|
||||
if (memchr(yytext, '\0', yyleng) != NULL) {
|
||||
lexer->token.type = cmListFileLexer_Token_BadCharacter;
|
||||
}
|
||||
lexer->column += yyleng;
|
||||
}
|
||||
YY_BREAK
|
||||
@@ -1232,6 +1221,9 @@ YY_RULE_SETUP
|
||||
case 10:
|
||||
YY_RULE_SETUP
|
||||
{
|
||||
if (memchr(yytext, '\0', yyleng) != NULL) {
|
||||
lexer->token.type = cmListFileLexer_Token_BadCharacter;
|
||||
}
|
||||
cmListFileLexerAppend(lexer, yytext, yyleng);
|
||||
lexer->column += yyleng;
|
||||
}
|
||||
@@ -1249,6 +1241,9 @@ YY_RULE_SETUP
|
||||
case 12:
|
||||
YY_RULE_SETUP
|
||||
{
|
||||
if (memchr(yytext, '\0', yyleng) != NULL) {
|
||||
lexer->token.type = cmListFileLexer_Token_BadCharacter;
|
||||
}
|
||||
cmListFileLexerAppend(lexer, yytext, yyleng);
|
||||
lexer->column += yyleng;
|
||||
BEGIN(BRACKET);
|
||||
@@ -1265,7 +1260,12 @@ case YY_STATE_EOF(BRACKETEND):
|
||||
case 13:
|
||||
YY_RULE_SETUP
|
||||
{
|
||||
lexer->token.type = cmListFileLexer_Token_ArgumentUnquoted;
|
||||
if (memchr(yytext, '\0', yyleng) != NULL) {
|
||||
/* An unquoted argument that contains a null character. */
|
||||
lexer->token.type = cmListFileLexer_Token_BadCharacter;
|
||||
} else {
|
||||
lexer->token.type = cmListFileLexer_Token_ArgumentUnquoted;
|
||||
}
|
||||
cmListFileLexerSetToken(lexer, yytext, yyleng);
|
||||
lexer->column += yyleng;
|
||||
return 1;
|
||||
@@ -1301,6 +1301,9 @@ YY_RULE_SETUP
|
||||
case 17:
|
||||
YY_RULE_SETUP
|
||||
{
|
||||
if (memchr(yytext, '\0', yyleng) != NULL) {
|
||||
lexer->token.type = cmListFileLexer_Token_BadCharacter;
|
||||
}
|
||||
cmListFileLexerAppend(lexer, yytext, yyleng);
|
||||
lexer->column += yyleng;
|
||||
}
|
||||
@@ -1334,6 +1337,9 @@ YY_RULE_SETUP
|
||||
case 21:
|
||||
YY_RULE_SETUP
|
||||
{
|
||||
if (memchr(yytext, '\0', yyleng) != NULL) {
|
||||
lexer->token.type = cmListFileLexer_Token_BadCharacter;
|
||||
}
|
||||
cmListFileLexerAppend(lexer, yytext, yyleng);
|
||||
lexer->column += yyleng;
|
||||
}
|
||||
@@ -1662,7 +1668,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
|
||||
|
||||
for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
|
||||
{
|
||||
YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 16);
|
||||
YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
|
||||
if ( yy_accept[yy_current_state] )
|
||||
{
|
||||
yyg->yy_last_accepting_state = yy_current_state;
|
||||
@@ -1671,7 +1677,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
|
||||
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||||
{
|
||||
yy_current_state = (int) yy_def[yy_current_state];
|
||||
if ( yy_current_state >= 79 )
|
||||
if ( yy_current_state >= 77 )
|
||||
yy_c = yy_meta[yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
|
||||
@@ -1691,7 +1697,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
|
||||
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
|
||||
char *yy_cp = yyg->yy_c_buf_p;
|
||||
|
||||
YY_CHAR yy_c = 16;
|
||||
YY_CHAR yy_c = 1;
|
||||
if ( yy_accept[yy_current_state] )
|
||||
{
|
||||
yyg->yy_last_accepting_state = yy_current_state;
|
||||
@@ -1700,11 +1706,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
|
||||
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||||
{
|
||||
yy_current_state = (int) yy_def[yy_current_state];
|
||||
if ( yy_current_state >= 79 )
|
||||
if ( yy_current_state >= 77 )
|
||||
yy_c = yy_meta[yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
|
||||
yy_is_jam = (yy_current_state == 78);
|
||||
yy_is_jam = (yy_current_state == 76);
|
||||
|
||||
(void)yyg;
|
||||
return yy_is_jam ? 0 : yy_current_state;
|
||||
|
@@ -74,7 +74,7 @@ static void cmListFileLexerDestroy(cmListFileLexer* lexer);
|
||||
%x COMMENT
|
||||
|
||||
MAKEVAR \$\([A-Za-z0-9_]*\)
|
||||
UNQUOTED ([^ \0\t\r\n\(\)#\\\"[=]|\\[^\0\n])
|
||||
UNQUOTED ([^ \t\r\n\(\)#\\\"[=]|\\[^\n])
|
||||
LEGACY {MAKEVAR}|{UNQUOTED}|\"({MAKEVAR}|{UNQUOTED}|[ \t[=])*\"
|
||||
|
||||
%%
|
||||
@@ -115,7 +115,10 @@ LEGACY {MAKEVAR}|{UNQUOTED}|\"({MAKEVAR}|{UNQUOTED}|[ \t[=])*\"
|
||||
BEGIN(COMMENT);
|
||||
}
|
||||
|
||||
<COMMENT>[^\0\n]* {
|
||||
<COMMENT>[^\n]* {
|
||||
if (memchr(yytext, '\0', yyleng) != NULL) {
|
||||
lexer->token.type = cmListFileLexer_Token_BadCharacter;
|
||||
}
|
||||
lexer->column += yyleng;
|
||||
}
|
||||
|
||||
@@ -157,7 +160,10 @@ LEGACY {MAKEVAR}|{UNQUOTED}|\"({MAKEVAR}|{UNQUOTED}|[ \t[=])*\"
|
||||
return 1;
|
||||
}
|
||||
|
||||
<BRACKET>([^]\0\n])+ {
|
||||
<BRACKET>([^]\n])+ {
|
||||
if (memchr(yytext, '\0', yyleng) != NULL) {
|
||||
lexer->token.type = cmListFileLexer_Token_BadCharacter;
|
||||
}
|
||||
cmListFileLexerAppend(lexer, yytext, yyleng);
|
||||
lexer->column += yyleng;
|
||||
}
|
||||
@@ -169,7 +175,10 @@ LEGACY {MAKEVAR}|{UNQUOTED}|\"({MAKEVAR}|{UNQUOTED}|[ \t[=])*\"
|
||||
BEGIN(BRACKET);
|
||||
}
|
||||
|
||||
<BRACKET,BRACKETEND>[^\0\n] {
|
||||
<BRACKET,BRACKETEND>[^\n] {
|
||||
if (memchr(yytext, '\0', yyleng) != NULL) {
|
||||
lexer->token.type = cmListFileLexer_Token_BadCharacter;
|
||||
}
|
||||
cmListFileLexerAppend(lexer, yytext, yyleng);
|
||||
lexer->column += yyleng;
|
||||
BEGIN(BRACKET);
|
||||
@@ -182,7 +191,12 @@ LEGACY {MAKEVAR}|{UNQUOTED}|\"({MAKEVAR}|{UNQUOTED}|[ \t[=])*\"
|
||||
}
|
||||
|
||||
({UNQUOTED}|=|\[=*{UNQUOTED})({UNQUOTED}|[[=])* {
|
||||
lexer->token.type = cmListFileLexer_Token_ArgumentUnquoted;
|
||||
if (memchr(yytext, '\0', yyleng) != NULL) {
|
||||
/* An unquoted argument that contains a null character. */
|
||||
lexer->token.type = cmListFileLexer_Token_BadCharacter;
|
||||
} else {
|
||||
lexer->token.type = cmListFileLexer_Token_ArgumentUnquoted;
|
||||
}
|
||||
cmListFileLexerSetToken(lexer, yytext, yyleng);
|
||||
lexer->column += yyleng;
|
||||
return 1;
|
||||
@@ -209,7 +223,10 @@ LEGACY {MAKEVAR}|{UNQUOTED}|\"({MAKEVAR}|{UNQUOTED}|[ \t[=])*\"
|
||||
BEGIN(STRING);
|
||||
}
|
||||
|
||||
<STRING>([^\\\0\n\"]|\\[^\0\n])+ {
|
||||
<STRING>([^\\\n\"]|\\[^\n])+ {
|
||||
if (memchr(yytext, '\0', yyleng) != NULL) {
|
||||
lexer->token.type = cmListFileLexer_Token_BadCharacter;
|
||||
}
|
||||
cmListFileLexerAppend(lexer, yytext, yyleng);
|
||||
lexer->column += yyleng;
|
||||
}
|
||||
@@ -232,7 +249,10 @@ LEGACY {MAKEVAR}|{UNQUOTED}|\"({MAKEVAR}|{UNQUOTED}|[ \t[=])*\"
|
||||
return 1;
|
||||
}
|
||||
|
||||
<STRING>[^\0\n] {
|
||||
<STRING>[^\n] {
|
||||
if (memchr(yytext, '\0', yyleng) != NULL) {
|
||||
lexer->token.type = cmListFileLexer_Token_BadCharacter;
|
||||
}
|
||||
cmListFileLexerAppend(lexer, yytext, yyleng);
|
||||
lexer->column += yyleng;
|
||||
}
|
||||
|
@@ -1,5 +1,5 @@
|
||||
CMake Error at NullAfterBackslash.cmake:1:
|
||||
Parse error. Function missing ending "\)". Instead found bad character
|
||||
with text "\\".
|
||||
with text "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\".
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
|
@@ -1,5 +1,5 @@
|
||||
CMake Error at NullTerminatedArgument.cmake:1:
|
||||
Parse error. Function missing ending "\)". Instead found bad character
|
||||
with text "".
|
||||
with text "TEST0000000000000000000000000".
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
|
Reference in New Issue
Block a user