Cope with a comment on the last line of the file with no newline.

Bug #623
This commit is contained in:
Todd C. Miller
2013-11-12 09:36:39 -07:00
parent 9d9d8e852b
commit a3aa40b0fe
2 changed files with 43 additions and 31 deletions

View File

@@ -312,45 +312,45 @@ static yyconst short int yy_accept[814] =
{ 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 68, 55, 63, 62, 61, 54,
66, 34, 56, 57, 34, 58, 55, 55, 55, 55,
65, 34, 56, 57, 34, 58, 55, 55, 55, 55,
60, 59, 66, 46, 46, 46, 46, 46, 46, 46,
46, 46, 46, 66, 55, 55, 63, 66, 46, 46,
46, 46, 46, 66, 55, 55, 63, 65, 46, 46,
46, 46, 46, 2, 66, 1, 55, 46, 46, 55,
17, 16, 17, 16, 16, 66, 66, 66, 3, 9,
17, 16, 17, 16, 16, 66, 65, 66, 3, 9,
8, 9, 4, 9, 5, 66, 13, 13, 13, 11,
12, 66, 19, 19, 18, 18, 18, 19, 18, 18,
18, 19, 19, 19, 19, 19, 18, 19, 19, 55,
0, 63, 61, 0, 65, 0, 55, 36, 0, 34,
0, 63, 61, 65, 65, 0, 55, 36, 0, 34,
0, 35, 0, 53, 53, 0, 55, 55, 0, 55,
55, 55, 55, 0, 39, 46, 46, 46, 46, 46,
46, 46, 46, 46, 46, 46, 46, 55, 64, 55,
55, 63, 0, 0, 0, 0, 0, 0, 55, 55,
55, 63, 0, 0, 0, 0, 0, 65, 55, 55,
55, 55, 55, 2, 1, 0, 1, 47, 47, 0,
55, 17, 17, 15, 14, 15, 0, 0, 3, 9,
0, 6, 7, 9, 9, 13, 0, 13, 13, 0,
10, 36, 0, 0, 35, 19, 19, 0, 19, 0,
0, 18, 18, 18, 18, 18, 18, 19, 19, 46,
19, 19, 19, 19, 19, 19, 19, 0, 0, 0,
19, 19, 19, 19, 19, 19, 19, 65, 65, 0,
36, 55, 55, 55, 55, 55, 0, 0, 39, 39,
46, 41, 46, 46, 46, 46, 46, 46, 46, 46,
46, 46, 46, 46, 55, 55, 0, 0, 0, 0,
0, 0, 55, 55, 55, 55, 55, 0, 55, 10,
0, 65, 55, 55, 55, 55, 55, 0, 55, 10,
0, 0, 0, 18, 18, 18, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 0, 55, 55,
19, 19, 19, 19, 19, 19, 19, 65, 55, 55,
55, 55, 55, 55, 0, 40, 40, 40, 0, 0,
39, 39, 39, 39, 39, 39, 39, 46, 46, 46,
46, 46, 46, 46, 46, 46, 46, 42, 46, 43,
55, 55, 55, 55, 0, 0, 0, 0, 0, 0,
55, 55, 55, 55, 0, 0, 0, 0, 0, 65,
55, 55, 55, 55, 0, 0, 0, 0, 0, 18,
18, 19, 46, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 55, 55, 55, 0, 0, 40, 40,
40, 0, 39, 39, 0, 39, 39, 39, 39, 39,
39, 39, 39, 39, 39, 39, 0, 27, 46, 46,
46, 46, 46, 46, 46, 46, 44, 46, 55, 55,
55, 55, 55, 0, 0, 0, 0, 55, 55, 55,
55, 55, 55, 0, 0, 0, 65, 55, 55, 55,
0, 0, 0, 18, 18, 46, 46, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 19, 55, 55,
@@ -358,7 +358,7 @@ static yyconst short int yy_accept[814] =
0, 0, 39, 39, 39, 39, 39, 39, 39, 39,
39, 39, 39, 39, 39, 46, 46, 46, 46, 46,
46, 46, 46, 46, 48, 49, 50, 51, 55, 0,
0, 0, 55, 55, 55, 0, 0, 0, 0, 0,
0, 65, 55, 55, 55, 0, 0, 0, 0, 0,
46, 46, 19, 46, 19, 19, 19, 19, 19, 19,
19, 19, 19, 37, 37, 37, 0, 0, 39, 39,
39, 39, 39, 39, 39, 0, 0, 0, 0, 0,
@@ -366,12 +366,12 @@ static yyconst short int yy_accept[814] =
39, 39, 39, 39, 46, 46, 46, 0, 26, 46,
46, 46, 46, 0, 25, 0, 28, 55, 0, 0,
0, 55, 55, 55, 37, 37, 37, 46, 46, 46,
65, 55, 55, 55, 37, 37, 37, 46, 46, 46,
46, 19, 19, 19, 55, 37, 37, 37, 37, 0,
39, 0, 39, 39, 39, 39, 39, 39, 39, 39,
39, 39, 39, 0, 0, 0, 39, 39, 39, 39,
39, 39, 39, 39, 39, 39, 39, 39, 39, 46,
46, 46, 46, 46, 46, 46, 52, 0, 0, 0,
46, 46, 46, 46, 46, 46, 52, 0, 0, 65,
55, 22, 47, 0, 37, 37, 37, 37, 46, 46,
46, 46, 19, 19, 19, 38, 38, 38, 38, 39,
0, 0, 0, 39, 39, 39, 39, 39, 39, 39,
@@ -379,23 +379,23 @@ static yyconst short int yy_accept[814] =
39, 39, 39, 39, 39, 39, 0, 0, 0, 0,
0, 39, 39, 39, 39, 39, 39, 39, 39, 46,
46, 46, 46, 46, 0, 24, 0, 29, 0, 22,
0, 0, 55, 0, 55, 38, 38, 38, 38, 46,
65, 65, 55, 0, 55, 38, 38, 38, 38, 46,
46, 46, 46, 55, 55, 38, 38, 38, 38, 0,
0, 0, 0, 0, 39, 39, 39, 39, 39, 39,
39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
39, 39, 39, 39, 45, 0, 32, 46, 46, 46,
0, 0, 0, 20, 0, 23, 22, 0, 0, 0,
0, 65, 65, 20, 65, 23, 22, 0, 0, 0,
0, 0, 22, 0, 0, 0, 38, 38, 38, 38,
46, 46, 46, 55, 55, 55, 0, 0, 0, 39,
39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
39, 39, 39, 39, 39, 39, 39, 0, 30, 46,
46, 23, 0, 0, 22, 0, 0, 0, 46, 46,
46, 23, 65, 0, 22, 0, 0, 0, 46, 46,
55, 55, 55, 55, 55, 0, 0, 0, 0, 0,
39, 39, 39, 39, 39, 39, 39, 39, 0, 33,
46, 0, 0, 0, 0, 0, 0, 46, 55, 55,
55, 39, 39, 39, 39, 39, 39, 0, 31, 0,
0, 21, 0, 0, 0, 55, 55, 55, 55, 55,
46, 65, 0, 0, 0, 0, 0, 46, 55, 55,
55, 39, 39, 39, 39, 39, 39, 0, 31, 65,
65, 21, 0, 0, 0, 55, 55, 55, 55, 55,
39, 39, 39, 39, 39, 0, 0, 0, 0, 0,
37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
@@ -3051,16 +3051,22 @@ case 65:
YY_RULE_SETUP
#line 702 "toke.l"
{
BEGIN INITIAL;
sudolineno++;
continued = false;
if (sudoerstext[sudoersleng - 1] == '\n') {
/* comment ending in a newline */
BEGIN INITIAL;
sudolineno++;
continued = false;
} else if (!feof(yyin)) {
LEXTRACE("ERROR ");
LEXRETURN(ERROR);
}
LEXTRACE("#\n");
LEXRETURN(COMMENT);
} /* comment, not uid/gid */
YY_BREAK
case 66:
YY_RULE_SETUP
#line 710 "toke.l"
#line 716 "toke.l"
{
LEXTRACE("ERROR ");
LEXRETURN(ERROR);
@@ -3073,7 +3079,7 @@ case YY_STATE_EOF(STARTDEFS):
case YY_STATE_EOF(INDEFS):
case YY_STATE_EOF(INSTR):
case YY_STATE_EOF(WANTDIGEST):
#line 715 "toke.l"
#line 721 "toke.l"
{
if (YY_START != INITIAL) {
BEGIN INITIAL;
@@ -3086,10 +3092,10 @@ case YY_STATE_EOF(WANTDIGEST):
YY_BREAK
case 67:
YY_RULE_SETUP
#line 725 "toke.l"
#line 731 "toke.l"
ECHO;
YY_BREAK
#line 3092 "lex.sudoers.c"
#line 3098 "lex.sudoers.c"
case YY_END_OF_BUFFER:
{
@@ -3980,7 +3986,7 @@ int main()
return 0;
}
#endif
#line 725 "toke.l"
#line 731 "toke.l"
struct path_list {
SLIST_ENTRY(path_list) entries;

View File

@@ -699,10 +699,16 @@ sudoedit {
continued = true;
} /* throw away EOL after \ */
<INITIAL,STARTDEFS,INDEFS>#(-[^\n0-9].*|[^\n0-9-].*)?\n {
BEGIN INITIAL;
sudolineno++;
continued = false;
<INITIAL,STARTDEFS,INDEFS>#(-[^\n0-9].*|[^\n0-9-].*)?\n? {
if (sudoerstext[sudoersleng - 1] == '\n') {
/* comment ending in a newline */
BEGIN INITIAL;
sudolineno++;
continued = false;
} else if (!feof(yyin)) {
LEXTRACE("ERROR ");
LEXRETURN(ERROR);
}
LEXTRACE("#\n");
LEXRETURN(COMMENT);
} /* comment, not uid/gid */