}
LEXTRACE("<*> ");
#ifndef TRACELEXER
- warningx(_(">>> %s: %s near line %d <<<"), sudoers, s, sudolineno);
+ if (trace_print == NULL || trace_print == sudoers_trace_print)
+ warningx(_(">>> %s: %s near line %d <<<"), sudoers, s, sudolineno);
#endif
parse_error = true;
debug_return;
}
-#line 119 "gram.y"
+#line 120 "gram.y"
#ifndef YYSTYPE_DEFINED
#define YYSTYPE_DEFINED
typedef union {
int tok;
} YYSTYPE;
#endif /* YYSTYPE_DEFINED */
-#line 146 "gram.c"
+#line 147 "gram.c"
#define COMMAND 257
#define ALIAS 258
#define DEFVAR 259
short *yysslim;
YYSTYPE *yyvs;
int yystacksize;
-#line 671 "gram.y"
+#line 672 "gram.y"
static struct defaults *
new_default(char *var, char *val, int op)
{
debug_return;
}
-#line 824 "gram.c"
+#line 825 "gram.c"
/* allocate initial stack or double stack size, up to YYMAXDEPTH */
#if defined(__cplusplus) || defined(__STDC__)
static int yygrowstack(void)
short *newss;
YYSTYPE *newvs;
- if ((newsize = yystacksize) == 0)
- newsize = YYINITSTACKSIZE;
- else if (newsize >= YYMAXDEPTH)
+ newsize = yystacksize ? yystacksize : YYINITSTACKSIZE;
+ if (newsize >= YYMAXDEPTH)
return -1;
else if ((newsize *= 2) > YYMAXDEPTH)
newsize = YYMAXDEPTH;
switch (yyn)
{
case 1:
-#line 201 "gram.y"
+#line 202 "gram.y"
{ ; }
break;
case 5:
-#line 209 "gram.y"
+#line 210 "gram.y"
{
;
}
break;
case 6:
-#line 212 "gram.y"
+#line 213 "gram.y"
{
yyerrok;
}
break;
case 7:
-#line 215 "gram.y"
+#line 216 "gram.y"
{
add_userspec(yyvsp[-1].member, yyvsp[0].privilege);
}
break;
case 8:
-#line 218 "gram.y"
+#line 219 "gram.y"
{
;
}
break;
case 9:
-#line 221 "gram.y"
+#line 222 "gram.y"
{
;
}
break;
case 10:
-#line 224 "gram.y"
+#line 225 "gram.y"
{
;
}
break;
case 11:
-#line 227 "gram.y"
+#line 228 "gram.y"
{
;
}
break;
case 12:
-#line 230 "gram.y"
+#line 231 "gram.y"
{
add_defaults(DEFAULTS, NULL, yyvsp[0].defaults);
}
break;
case 13:
-#line 233 "gram.y"
+#line 234 "gram.y"
{
add_defaults(DEFAULTS_USER, yyvsp[-1].member, yyvsp[0].defaults);
}
break;
case 14:
-#line 236 "gram.y"
+#line 237 "gram.y"
{
add_defaults(DEFAULTS_RUNAS, yyvsp[-1].member, yyvsp[0].defaults);
}
break;
case 15:
-#line 239 "gram.y"
+#line 240 "gram.y"
{
add_defaults(DEFAULTS_HOST, yyvsp[-1].member, yyvsp[0].defaults);
}
break;
case 16:
-#line 242 "gram.y"
+#line 243 "gram.y"
{
add_defaults(DEFAULTS_CMND, yyvsp[-1].member, yyvsp[0].defaults);
}
break;
case 18:
-#line 248 "gram.y"
+#line 249 "gram.y"
{
list_append(yyvsp[-2].defaults, yyvsp[0].defaults);
yyval.defaults = yyvsp[-2].defaults;
}
break;
case 19:
-#line 254 "gram.y"
+#line 255 "gram.y"
{
yyval.defaults = new_default(yyvsp[0].string, NULL, true);
}
break;
case 20:
-#line 257 "gram.y"
+#line 258 "gram.y"
{
yyval.defaults = new_default(yyvsp[0].string, NULL, false);
}
break;
case 21:
-#line 260 "gram.y"
+#line 261 "gram.y"
{
yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, true);
}
break;
case 22:
-#line 263 "gram.y"
+#line 264 "gram.y"
{
yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '+');
}
break;
case 23:
-#line 266 "gram.y"
+#line 267 "gram.y"
{
yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '-');
}
break;
case 25:
-#line 272 "gram.y"
+#line 273 "gram.y"
{
list_append(yyvsp[-2].privilege, yyvsp[0].privilege);
yyval.privilege = yyvsp[-2].privilege;
}
break;
case 26:
-#line 278 "gram.y"
+#line 279 "gram.y"
{
struct privilege *p = ecalloc(1, sizeof(*p));
list2tq(&p->hostlist, yyvsp[-2].member);
}
break;
case 27:
-#line 288 "gram.y"
+#line 289 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = false;
}
break;
case 28:
-#line 292 "gram.y"
+#line 293 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = true;
}
break;
case 29:
-#line 298 "gram.y"
+#line 299 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, ALIAS);
}
break;
case 30:
-#line 301 "gram.y"
+#line 302 "gram.y"
{
yyval.member = new_member(NULL, ALL);
}
break;
case 31:
-#line 304 "gram.y"
+#line 305 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, NETGROUP);
}
break;
case 32:
-#line 307 "gram.y"
+#line 308 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, NTWKADDR);
}
break;
case 33:
-#line 310 "gram.y"
+#line 311 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, WORD);
}
break;
case 35:
-#line 316 "gram.y"
+#line 317 "gram.y"
{
list_append(yyvsp[-2].cmndspec, yyvsp[0].cmndspec);
#ifdef HAVE_SELINUX
}
break;
case 36:
-#line 355 "gram.y"
+#line 356 "gram.y"
{
struct cmndspec *cs = ecalloc(1, sizeof(*cs));
if (yyvsp[-4].runas != NULL) {
}
break;
case 37:
-#line 385 "gram.y"
+#line 386 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = false;
}
break;
case 38:
-#line 389 "gram.y"
+#line 390 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = true;
}
break;
case 39:
-#line 395 "gram.y"
+#line 396 "gram.y"
{
yyval.string = yyvsp[0].string;
}
break;
case 40:
-#line 400 "gram.y"
+#line 401 "gram.y"
{
yyval.string = yyvsp[0].string;
}
break;
case 41:
-#line 405 "gram.y"
+#line 406 "gram.y"
{
yyval.seinfo.role = NULL;
yyval.seinfo.type = NULL;
}
break;
case 42:
-#line 409 "gram.y"
+#line 410 "gram.y"
{
yyval.seinfo.role = yyvsp[0].string;
yyval.seinfo.type = NULL;
}
break;
case 43:
-#line 413 "gram.y"
+#line 414 "gram.y"
{
yyval.seinfo.type = yyvsp[0].string;
yyval.seinfo.role = NULL;
}
break;
case 44:
-#line 417 "gram.y"
+#line 418 "gram.y"
{
yyval.seinfo.role = yyvsp[-1].string;
yyval.seinfo.type = yyvsp[0].string;
}
break;
case 45:
-#line 421 "gram.y"
+#line 422 "gram.y"
{
yyval.seinfo.type = yyvsp[-1].string;
yyval.seinfo.role = yyvsp[0].string;
}
break;
case 46:
-#line 427 "gram.y"
+#line 428 "gram.y"
{
yyval.string = yyvsp[0].string;
}
break;
case 47:
-#line 431 "gram.y"
+#line 432 "gram.y"
{
yyval.string = yyvsp[0].string;
}
break;
case 48:
-#line 436 "gram.y"
+#line 437 "gram.y"
{
yyval.privinfo.privs = NULL;
yyval.privinfo.limitprivs = NULL;
}
break;
case 49:
-#line 440 "gram.y"
+#line 441 "gram.y"
{
yyval.privinfo.privs = yyvsp[0].string;
yyval.privinfo.limitprivs = NULL;
}
break;
case 50:
-#line 444 "gram.y"
+#line 445 "gram.y"
{
yyval.privinfo.privs = NULL;
yyval.privinfo.limitprivs = yyvsp[0].string;
}
break;
case 51:
-#line 448 "gram.y"
+#line 449 "gram.y"
{
yyval.privinfo.privs = yyvsp[-1].string;
yyval.privinfo.limitprivs = yyvsp[0].string;
}
break;
case 52:
-#line 452 "gram.y"
+#line 453 "gram.y"
{
yyval.privinfo.limitprivs = yyvsp[-1].string;
yyval.privinfo.privs = yyvsp[0].string;
}
break;
case 53:
-#line 457 "gram.y"
+#line 458 "gram.y"
{
yyval.runas = NULL;
}
break;
case 54:
-#line 460 "gram.y"
+#line 461 "gram.y"
{
yyval.runas = yyvsp[-1].runas;
}
break;
case 55:
-#line 465 "gram.y"
+#line 466 "gram.y"
{
yyval.runas = ecalloc(1, sizeof(struct runascontainer));
yyval.runas->runasusers = new_member(NULL, MYSELF);
}
break;
case 56:
-#line 470 "gram.y"
+#line 471 "gram.y"
{
yyval.runas = ecalloc(1, sizeof(struct runascontainer));
yyval.runas->runasusers = yyvsp[0].member;
}
break;
case 57:
-#line 475 "gram.y"
+#line 476 "gram.y"
{
yyval.runas = ecalloc(1, sizeof(struct runascontainer));
yyval.runas->runasusers = yyvsp[-2].member;
}
break;
case 58:
-#line 480 "gram.y"
+#line 481 "gram.y"
{
yyval.runas = ecalloc(1, sizeof(struct runascontainer));
/* $$->runasusers = NULL; */
}
break;
case 59:
-#line 485 "gram.y"
+#line 486 "gram.y"
{
yyval.runas = ecalloc(1, sizeof(struct runascontainer));
yyval.runas->runasusers = new_member(NULL, MYSELF);
}
break;
case 60:
-#line 492 "gram.y"
+#line 493 "gram.y"
{
yyval.tag.nopasswd = yyval.tag.noexec = yyval.tag.setenv =
yyval.tag.log_input = yyval.tag.log_output = UNSPEC;
}
break;
case 61:
-#line 496 "gram.y"
+#line 497 "gram.y"
{
yyval.tag.nopasswd = true;
}
break;
case 62:
-#line 499 "gram.y"
+#line 500 "gram.y"
{
yyval.tag.nopasswd = false;
}
break;
case 63:
-#line 502 "gram.y"
+#line 503 "gram.y"
{
yyval.tag.noexec = true;
}
break;
case 64:
-#line 505 "gram.y"
+#line 506 "gram.y"
{
yyval.tag.noexec = false;
}
break;
case 65:
-#line 508 "gram.y"
+#line 509 "gram.y"
{
yyval.tag.setenv = true;
}
break;
case 66:
-#line 511 "gram.y"
+#line 512 "gram.y"
{
yyval.tag.setenv = false;
}
break;
case 67:
-#line 514 "gram.y"
+#line 515 "gram.y"
{
yyval.tag.log_input = true;
}
break;
case 68:
-#line 517 "gram.y"
+#line 518 "gram.y"
{
yyval.tag.log_input = false;
}
break;
case 69:
-#line 520 "gram.y"
+#line 521 "gram.y"
{
yyval.tag.log_output = true;
}
break;
case 70:
-#line 523 "gram.y"
+#line 524 "gram.y"
{
yyval.tag.log_output = false;
}
break;
case 71:
-#line 528 "gram.y"
+#line 529 "gram.y"
{
yyval.member = new_member(NULL, ALL);
}
break;
case 72:
-#line 531 "gram.y"
+#line 532 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, ALIAS);
}
break;
case 73:
-#line 534 "gram.y"
+#line 535 "gram.y"
{
struct sudo_command *c = ecalloc(1, sizeof(*c));
c->cmnd = yyvsp[0].command.cmnd;
}
break;
case 76:
-#line 546 "gram.y"
+#line 547 "gram.y"
{
char *s;
if ((s = alias_add(yyvsp[-2].string, HOSTALIAS, yyvsp[0].member)) != NULL) {
}
break;
case 78:
-#line 556 "gram.y"
+#line 557 "gram.y"
{
list_append(yyvsp[-2].member, yyvsp[0].member);
yyval.member = yyvsp[-2].member;
}
break;
case 81:
-#line 566 "gram.y"
+#line 567 "gram.y"
{
char *s;
if ((s = alias_add(yyvsp[-2].string, CMNDALIAS, yyvsp[0].member)) != NULL) {
}
break;
case 83:
-#line 576 "gram.y"
+#line 577 "gram.y"
{
list_append(yyvsp[-2].member, yyvsp[0].member);
yyval.member = yyvsp[-2].member;
}
break;
case 86:
-#line 586 "gram.y"
+#line 587 "gram.y"
{
char *s;
if ((s = alias_add(yyvsp[-2].string, RUNASALIAS, yyvsp[0].member)) != NULL) {
}
break;
case 89:
-#line 599 "gram.y"
+#line 600 "gram.y"
{
char *s;
if ((s = alias_add(yyvsp[-2].string, USERALIAS, yyvsp[0].member)) != NULL) {
}
break;
case 91:
-#line 609 "gram.y"
+#line 610 "gram.y"
{
list_append(yyvsp[-2].member, yyvsp[0].member);
yyval.member = yyvsp[-2].member;
}
break;
case 92:
-#line 615 "gram.y"
+#line 616 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = false;
}
break;
case 93:
-#line 619 "gram.y"
+#line 620 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = true;
}
break;
case 94:
-#line 625 "gram.y"
+#line 626 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, ALIAS);
}
break;
case 95:
-#line 628 "gram.y"
+#line 629 "gram.y"
{
yyval.member = new_member(NULL, ALL);
}
break;
case 96:
-#line 631 "gram.y"
+#line 632 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, NETGROUP);
}
break;
case 97:
-#line 634 "gram.y"
+#line 635 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, USERGROUP);
}
break;
case 98:
-#line 637 "gram.y"
+#line 638 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, WORD);
}
break;
case 100:
-#line 643 "gram.y"
+#line 644 "gram.y"
{
list_append(yyvsp[-2].member, yyvsp[0].member);
yyval.member = yyvsp[-2].member;
}
break;
case 101:
-#line 649 "gram.y"
+#line 650 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = false;
}
break;
case 102:
-#line 653 "gram.y"
+#line 654 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = true;
}
break;
case 103:
-#line 659 "gram.y"
+#line 660 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, ALIAS);
}
break;
case 104:
-#line 662 "gram.y"
+#line 663 "gram.y"
{
yyval.member = new_member(NULL, ALL);
}
break;
case 105:
-#line 665 "gram.y"
+#line 666 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, WORD);
}
/* A lexical scanner generated by flex */
/* Scanner skeleton version:
- * $Header: /cvs/src/usr.bin/lex/flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $
+ * $Header: /home/cvs/openbsd/src/usr.bin/lex/flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $
*/
#define FLEX_SCANNER
static bool pop_include(void);
static char *parse_include(char *);
-static int sudoers_trace_print(const char *msg);
int (*trace_print)(const char *msg) = sudoers_trace_print;
#define LEXRETURN(n) do { \
#define INSTR 5
-#line 1515 "lex.yy.c"
+#line 1514 "lex.yy.c"
/* Macros after this point can all be overridden by user definitions in
* section 1.
register char *yy_cp, *yy_bp;
register int yy_act;
-#line 133 "toke.l"
+#line 132 "toke.l"
-#line 1671 "lex.yy.c"
+#line 1670 "lex.yy.c"
if ( yy_init )
{
case 1:
YY_RULE_SETUP
-#line 134 "toke.l"
+#line 133 "toke.l"
{
LEXTRACE(", ");
LEXRETURN(',');
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 139 "toke.l"
+#line 138 "toke.l"
BEGIN STARTDEFS;
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 141 "toke.l"
+#line 140 "toke.l"
{
BEGIN INDEFS;
LEXTRACE("DEFVAR ");
case 4:
YY_RULE_SETUP
-#line 150 "toke.l"
+#line 149 "toke.l"
{
BEGIN STARTDEFS;
LEXTRACE(", ");
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 156 "toke.l"
+#line 155 "toke.l"
{
LEXTRACE("= ");
LEXRETURN('=');
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 161 "toke.l"
+#line 160 "toke.l"
{
LEXTRACE("+= ");
LEXRETURN('+');
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 166 "toke.l"
+#line 165 "toke.l"
{
LEXTRACE("-= ");
LEXRETURN('-');
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 171 "toke.l"
+#line 170 "toke.l"
{
LEXTRACE("BEGINSTR ");
yylval.string = NULL;
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 178 "toke.l"
+#line 177 "toke.l"
{
LEXTRACE("WORD(2) ");
if (!fill(yytext, yyleng))
case 10:
YY_RULE_SETUP
-#line 187 "toke.l"
+#line 186 "toke.l"
{
/* Line continuation char followed by newline. */
sudolineno++;
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 193 "toke.l"
+#line 192 "toke.l"
{
LEXTRACE("ENDSTR ");
BEGIN prev_state;
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 225 "toke.l"
+#line 224 "toke.l"
{
LEXTRACE("BACKSLASH ");
if (!append(yytext, yyleng))
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 231 "toke.l"
+#line 230 "toke.l"
{
LEXTRACE("STRBODY ");
if (!append(yytext, yyleng))
case 14:
YY_RULE_SETUP
-#line 239 "toke.l"
+#line 238 "toke.l"
{
/* quoted fnmatch glob char, pass verbatim */
LEXTRACE("QUOTEDCHAR ");
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 247 "toke.l"
+#line 246 "toke.l"
{
/* quoted sudoers special char, strip backslash */
LEXTRACE("QUOTEDCHAR ");
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 255 "toke.l"
+#line 254 "toke.l"
{
BEGIN INITIAL;
yyless(0);
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 261 "toke.l"
+#line 260 "toke.l"
{
LEXTRACE("ARG ");
if (!fill_args(yytext, yyleng, sawspace))
case 18:
YY_RULE_SETUP
-#line 269 "toke.l"
+#line 268 "toke.l"
{
char *path;
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 287 "toke.l"
+#line 286 "toke.l"
{
char *path;
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 308 "toke.l"
+#line 307 "toke.l"
{
char deftype;
int n;
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 348 "toke.l"
+#line 347 "toke.l"
{
int n;
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 374 "toke.l"
+#line 373 "toke.l"
{
/* cmnd does not require passwd for this user */
LEXTRACE("NOPASSWD ");
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 380 "toke.l"
+#line 379 "toke.l"
{
/* cmnd requires passwd for this user */
LEXTRACE("PASSWD ");
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 386 "toke.l"
+#line 385 "toke.l"
{
LEXTRACE("NOEXEC ");
LEXRETURN(NOEXEC);
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 391 "toke.l"
+#line 390 "toke.l"
{
LEXTRACE("EXEC ");
LEXRETURN(EXEC);
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 396 "toke.l"
+#line 395 "toke.l"
{
LEXTRACE("SETENV ");
LEXRETURN(SETENV);
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 401 "toke.l"
+#line 400 "toke.l"
{
LEXTRACE("NOSETENV ");
LEXRETURN(NOSETENV);
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 406 "toke.l"
+#line 405 "toke.l"
{
LEXTRACE("LOG_OUTPUT ");
LEXRETURN(LOG_OUTPUT);
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 411 "toke.l"
+#line 410 "toke.l"
{
LEXTRACE("NOLOG_OUTPUT ");
LEXRETURN(NOLOG_OUTPUT);
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 416 "toke.l"
+#line 415 "toke.l"
{
LEXTRACE("LOG_INPUT ");
LEXRETURN(LOG_INPUT);
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 421 "toke.l"
+#line 420 "toke.l"
{
LEXTRACE("NOLOG_INPUT ");
LEXRETURN(NOLOG_INPUT);
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 426 "toke.l"
+#line 425 "toke.l"
{
/* empty group or netgroup */
LEXTRACE("ERROR ");
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 432 "toke.l"
+#line 431 "toke.l"
{
/* netgroup */
if (!fill(yytext, yyleng))
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 440 "toke.l"
+#line 439 "toke.l"
{
/* group */
if (!fill(yytext, yyleng))
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 448 "toke.l"
+#line 447 "toke.l"
{
if (!fill(yytext, yyleng))
yyterminate();
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 455 "toke.l"
+#line 454 "toke.l"
{
if (!fill(yytext, yyleng))
yyterminate();
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 462 "toke.l"
+#line 461 "toke.l"
{
if (!ipv6_valid(yytext)) {
LEXTRACE("ERROR ");
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 473 "toke.l"
+#line 472 "toke.l"
{
if (!ipv6_valid(yytext)) {
LEXTRACE("ERROR ");
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 484 "toke.l"
+#line 483 "toke.l"
{
LEXTRACE("ALL ");
LEXRETURN(ALL);
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 490 "toke.l"
+#line 489 "toke.l"
{
#ifdef HAVE_SELINUX
LEXTRACE("ROLE ");
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 499 "toke.l"
+#line 498 "toke.l"
{
#ifdef HAVE_SELINUX
LEXTRACE("TYPE ");
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 507 "toke.l"
+#line 506 "toke.l"
{
#ifdef HAVE_PRIV_SET
LEXTRACE("PRIVS ");
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 516 "toke.l"
+#line 515 "toke.l"
{
#ifdef HAVE_PRIV_SET
LEXTRACE("LIMITPRIVS ");
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 525 "toke.l"
+#line 524 "toke.l"
{
got_alias:
if (!fill(yytext, yyleng))
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 533 "toke.l"
+#line 532 "toke.l"
{
/* no command args allowed for Defaults!/path */
if (!fill_cmnd(yytext, yyleng))
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 541 "toke.l"
+#line 540 "toke.l"
{
BEGIN GOTCMND;
LEXTRACE("COMMAND ");
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 548 "toke.l"
+#line 547 "toke.l"
{
/* directories can't have args... */
if (yytext[yyleng - 1] == '/') {
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 563 "toke.l"
+#line 562 "toke.l"
{
LEXTRACE("BEGINSTR ");
yylval.string = NULL;
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 570 "toke.l"
+#line 569 "toke.l"
{
/* a word */
if (!fill(yytext, yyleng))
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 578 "toke.l"
+#line 577 "toke.l"
{
LEXTRACE("( ");
LEXRETURN('(');
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 583 "toke.l"
+#line 582 "toke.l"
{
LEXTRACE(") ");
LEXRETURN(')');
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 588 "toke.l"
+#line 587 "toke.l"
{
LEXTRACE(", ");
LEXRETURN(',');
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 593 "toke.l"
+#line 592 "toke.l"
{
LEXTRACE("= ");
LEXRETURN('=');
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 598 "toke.l"
+#line 597 "toke.l"
{
LEXTRACE(": ");
LEXRETURN(':');
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 603 "toke.l"
+#line 602 "toke.l"
{
if (yyleng & 1) {
LEXTRACE("!");
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 610 "toke.l"
+#line 609 "toke.l"
{
if (YY_START == INSTR) {
LEXTRACE("ERROR ");
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 622 "toke.l"
+#line 621 "toke.l"
{ /* throw away space/tabs */
sawspace = true; /* but remember for fill_args */
}
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 626 "toke.l"
+#line 625 "toke.l"
{
sawspace = true; /* remember for fill_args */
sudolineno++;
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 632 "toke.l"
+#line 631 "toke.l"
{
BEGIN INITIAL;
sudolineno++;
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 640 "toke.l"
+#line 639 "toke.l"
{
LEXTRACE("ERROR ");
LEXRETURN(ERROR);
case YY_STATE_EOF(STARTDEFS):
case YY_STATE_EOF(INDEFS):
case YY_STATE_EOF(INSTR):
-#line 645 "toke.l"
+#line 644 "toke.l"
{
if (YY_START != INITIAL) {
BEGIN INITIAL;
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 655 "toke.l"
+#line 654 "toke.l"
ECHO;
YY_BREAK
-#line 2469 "lex.yy.c"
+#line 2468 "lex.yy.c"
case YY_END_OF_BUFFER:
{
return 0;
}
#endif
-#line 655 "toke.l"
+#line 654 "toke.l"
struct path_list {
char *path;
}
#ifdef TRACELEXER
-static int
+int
sudoers_trace_print(const char *msg)
{
return fputs(msg, stderr);
}
#else
-static int
+int
sudoers_trace_print(const char *msg)
{
static bool initialized;