Diff for /embedaddon/sudo/plugins/sudoers/gram.c between versions 1.1.1.2 and 1.1.1.3

version 1.1.1.2, 2012/05/29 12:26:49 version 1.1.1.3, 2012/10/09 09:29:52
Line 56 Line 56
 #ifdef HAVE_UNISTD_H  #ifdef HAVE_UNISTD_H
 # include <unistd.h>  # include <unistd.h>
 #endif /* HAVE_UNISTD_H */  #endif /* HAVE_UNISTD_H */
   #ifdef HAVE_INTTYPES_H
   # include <inttypes.h>
   #endif
 #if defined(YYBISON) && defined(HAVE_ALLOCA_H) && !defined(__GNUC__)  #if defined(YYBISON) && defined(HAVE_ALLOCA_H) && !defined(__GNUC__)
 # include <alloca.h>  # include <alloca.h>
 #endif /* YYBISON && HAVE_ALLOCA_H && !__GNUC__ */  #endif /* YYBISON && HAVE_ALLOCA_H && !__GNUC__ */
Line 116  yyerror(const char *s) Line 119  yyerror(const char *s)
         errorlineno = sudolineno;          errorlineno = sudolineno;
         errorfile = estrdup(sudoers);          errorfile = estrdup(sudoers);
     }      }
    if (trace_print != NULL) {    if (sudoers_warnings && s != NULL) {
         LEXTRACE("<*> ");          LEXTRACE("<*> ");
    } else if (sudoers_warnings && s != NULL) {#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;      parse_error = true;
     debug_return;      debug_return;
 }  }
#line 117 "gram.y"#line 122 "gram.y"
 #ifndef YYSTYPE_DEFINED  #ifndef YYSTYPE_DEFINED
 #define YYSTYPE_DEFINED  #define YYSTYPE_DEFINED
 typedef union {  typedef union {
Line 136  typedef union { Line 141  typedef union {
     struct sudo_command command;      struct sudo_command command;
     struct cmndtag tag;      struct cmndtag tag;
     struct selinux_info seinfo;      struct selinux_info seinfo;
       struct solaris_privs_info privinfo;
     char *string;      char *string;
     int tok;      int tok;
 } YYSTYPE;  } YYSTYPE;
 #endif /* YYSTYPE_DEFINED */  #endif /* YYSTYPE_DEFINED */
#line 143 "gram.c"#line 149 "gram.c"
 #define COMMAND 257  #define COMMAND 257
 #define ALIAS 258  #define ALIAS 258
 #define DEFVAR 259  #define DEFVAR 259
Line 172  typedef union { Line 178  typedef union {
 #define ERROR 285  #define ERROR 285
 #define TYPE 286  #define TYPE 286
 #define ROLE 287  #define ROLE 287
   #define PRIVS 288
   #define LIMITPRIVS 289
   #define MYSELF 290
 #define YYERRCODE 256  #define YYERRCODE 256
 #if defined(__cplusplus) || defined(__STDC__)  #if defined(__cplusplus) || defined(__STDC__)
 const short yylhs[] =  const short yylhs[] =
Line 179  const short yylhs[] = Line 188  const short yylhs[] =
 short yylhs[] =  short yylhs[] =
 #endif  #endif
         {                                        -1,          {                                        -1,
    0,    0,   25,   25,   26,   26,   26,   26,   26,   26,    0,    0,   28,   28,   29,   29,   29,   29,   29,   29,
   26,   26,   26,   26,   26,   26,    4,    4,    3,    3,   29,   29,   29,   29,   29,   29,    4,    4,    3,    3,
     3,    3,    3,   20,   20,   19,   10,   10,    8,    8,      3,    3,    3,   20,   20,   19,   10,   10,    8,    8,
     8,    8,    8,    2,    2,    1,    6,    6,   23,   24,      8,    8,    8,    2,    2,    1,    6,    6,   23,   24,
   22,   22,   22,   22,   22,   17,   17,   18,   18,   18,   22,   22,   22,   22,   22,   26,   27,   25,   25,   25,
    25,   25,   17,   17,   18,   18,   18,   18,   18,   21,
    21,   21,   21,   21,   21,   21,   21,   21,   21,   21,     21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
   21,    5,    5,    5,   28,   28,   31,    9,    9,   29,    5,    5,    5,   31,   31,   34,    9,    9,   32,   32,
   29,   32,    7,    7,   30,   30,   33,   27,   27,   34,   35,    7,    7,   33,   33,   36,   30,   30,   37,   13,
   13,   13,   11,   11,   12,   12,   12,   12,   12,   16,   13,   11,   11,   12,   12,   12,   12,   12,   16,   16,
   16,   14,   14,   15,   15,   15,   14,   14,   15,   15,   15,
 };  };
 #if defined(__cplusplus) || defined(__STDC__)  #if defined(__cplusplus) || defined(__STDC__)
 const short yylen[] =  const short yylen[] =
Line 199  short yylen[] = Line 209  short yylen[] =
     0,    1,    1,    2,    1,    2,    2,    2,    2,    2,      0,    1,    1,    2,    1,    2,    2,    2,    2,    2,
     2,    2,    3,    3,    3,    3,    1,    3,    1,    2,      2,    2,    3,    3,    3,    3,    1,    3,    1,    2,
     3,    3,    3,    1,    3,    3,    1,    2,    1,    1,      3,    3,    3,    1,    3,    3,    1,    2,    1,    1,
    1,    1,    1,    1,    3,    4,    1,    2,    3,    3,    1,    1,    1,    1,    3,    5,    1,    2,    3,    3,
    0,    1,    1,    2,    2,    0,    3,    1,    3,    2,    0,    1,    1,    2,    2,    3,    3,    0,    1,    1,
    0,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    0,    3,    0,    1,    3,    2,    1,    0,
    2,    1,    1,    1,    1,    3,    3,    1,    3,    1,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
    3,    3,    1,    3,    1,    3,    3,    1,    3,    3,    1,    1,    1,    1,    3,    3,    1,    3,    1,    3,
    1,    3,    1,    2,    1,    1,    1,    1,    1,    1,    3,    1,    3,    1,    3,    3,    1,    3,    3,    1,
    3,    1,    2,    1,    1,    1,    3,    1,    2,    1,    1,    1,    1,    1,    1,    3,
     1,    2,    1,    1,    1,
 };  };
 #if defined(__cplusplus) || defined(__STDC__)  #if defined(__cplusplus) || defined(__STDC__)
 const short yydefred[] =  const short yydefred[] =
Line 213  const short yydefred[] = Line 224  const short yydefred[] =
 short yydefred[] =  short yydefred[] =
 #endif  #endif
         {                                      0,          {                                      0,
    0,   85,   87,   88,   89,    0,    0,    0,    0,    0,    0,   94,   96,   97,   98,    0,    0,    0,    0,    0,
   86,    5,    0,    0,    0,    0,    0,    0,   81,   83,   95,    5,    0,    0,    0,    0,    0,    0,   90,   92,
     0,    0,    3,    6,    0,    0,   17,    0,   29,   32,      0,    0,    3,    6,    0,    0,   17,    0,   29,   32,
   31,   33,   30,    0,   27,    0,   68,    0,    0,   64,   31,   33,   30,    0,   27,    0,   77,    0,    0,   73,
   63,   62,    0,   37,   73,    0,    0,    0,   65,    0,   72,   71,    0,   37,   82,    0,    0,    0,   74,    0,
    0,   70,    0,    0,   78,    0,    0,   75,   84,    0,    0,   79,    0,    0,   87,    0,    0,   84,   93,    0,
     0,   24,    0,    4,    0,    0,    0,   20,    0,   28,      0,   24,    0,    4,    0,    0,    0,   20,    0,   28,
     0,    0,    0,    0,   38,    0,    0,    0,    0,    0,      0,    0,    0,    0,   38,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   82,    0,    0,   21,   22,    0,    0,    0,    0,    0,   91,    0,    0,   21,   22,
   23,   18,   69,   74,    0,   66,    0,   71,    0,   79,   23,   18,   78,   83,    0,   75,    0,   80,    0,   88,
    0,   76,    0,   34,    0,    0,   25,    0,    0,    0,    0,   85,    0,   34,    0,    0,   25,    0,    0,    0,
    0,    0,    0,   51,    0,    0,   94,   96,   95,    0,    0,    0,    0,    0,    0,    0,  103,  105,  104,    0,
   90,   92,    0,    0,   47,   35,    0,    0,    0,   44,   99,  101,    0,    0,   54,   35,    0,    0,    0,    0,
   45,   93,    0,    0,   40,   39,   52,   53,   54,   55,   60,    0,    0,   44,   45,  102,    0,    0,   40,   39,
   56,   57,   58,   59,   60,   61,   36,   91,    0,    0,    0,   51,   52,  100,   46,   47,   61,   62,
    63,   64,   65,   66,   67,   68,   69,   70,   36,
 };  };
 #if defined(__cplusplus) || defined(__STDC__)  #if defined(__cplusplus) || defined(__STDC__)
 const short yydgoto[] =  const short yydgoto[] =
Line 237  short yydgoto[] = Line 249  short yydgoto[] =
         {                                      18,          {                                      18,
   104,  105,   27,   28,   44,   45,   46,   35,   61,   37,    104,  105,   27,   28,   44,   45,   46,   35,   61,   37,
    19,   20,   21,  121,  122,  123,  106,  110,   62,   63,     19,   20,   21,  121,  122,  123,  106,  110,   62,   63,
  129,  114,  115,  116,   22,   23,   54,   48,   51,   57,  143,  114,  115,  116,  131,  132,  133,   22,   23,   54,
   49,   52,   58,   55,   48,   51,   57,   49,   52,   58,   55,
 };  };
 #if defined(__cplusplus) || defined(__STDC__)  #if defined(__cplusplus) || defined(__STDC__)
 const short yysindex[] =  const short yysindex[] =
 #else  #else
 short yysindex[] =  short yysindex[] =
 #endif  #endif
        {                                    475,        {                                    541,
 -270,    0,    0,    0,    0,  -29,  567,  594,  594,   -2, -270,    0,    0,    0,    0,  -21,   -5,  553,  553,   20,
    0,    0, -240, -222, -216, -212, -241,    0,    0,    0,    0,    0, -242, -229, -216, -214, -240,    0,    0,    0,
  -25,  475,    0,    0,  -10, -207,    0,    9,    0,    0,  -27,  541,    0,    0,  -18, -227,    0,    2,    0,    0,
    0,    0,    0, -235,    0,  -33,    0,  -31,  -31,    0,    0,    0,    0, -223,    0,  -33,    0,  -31,  -31,    0,
    0,    0, -242,    0,    0,  -30,   -7,    3,    0,   -6,    0,    0, -243,    0,    0,  -24,  -12,   -6,    0,    3,
    4,    0,   -5,    6,    0,   -1,    8,    0,    0,  594,    4,    0,    5,    7,    0,    6,   10,    0,    0,  553,
  -20,    0,   10,    0, -205, -196, -194,    0,  -29,    0,  -20,    0,   11,    0, -206, -193, -191,    0,  -21,    0,
  567,    9,    9,    9,    0,   -2,    9,  567, -240,   -2,   -5,    2,    2,    2,    0,   20,    2,   -5, -242,   20,
 -222,  594, -216,  594, -212,    0,   31,  567,    0,    0, -229,  553, -216,  553, -214,    0,   33,   -5,    0,    0,
    0,    0,    0,    0,   26,    0,   28,    0,   29,    0,    0,    0,    0,    0,   31,    0,   32,    0,   34,    0,
   29,    0,  541,    0,   32, -247,    0,   86,  -15,   33,   34,    0,  513,    0,   35, -226,    0,   86,  -25,   36,
   31,   14,   16,    0, -208, -204,    0,    0,    0, -231,   33,   19,   21, -234, -202, -201,    0,    0,    0, -232,
    0,    0,   38,   86,    0,    0, -179, -178,  491,    0,    0,    0,   41,   86,    0,    0, -176, -173,   37,   38,
    0,    0,   86,   38,    0,    0,    0,    0,    0,    0,    0, -198, -195,    0,    0,    0,   86,   41,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,}; -169, -168,  569,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,};
 #if defined(__cplusplus) || defined(__STDC__)  #if defined(__cplusplus) || defined(__STDC__)
 const short yyrindex[] =  const short yyrindex[] =
 #else  #else
 short yyrindex[] =  short yyrindex[] =
 #endif  #endif
        {                                     87,        {                                     96,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   90,    0,    0,    1,    0,    0,  177,    0,    0,    0,   97,    0,    0,    1,    0,    0,  177,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,  207,    0,    0,      0,    0,    0,    0,    0,    0,    0,  207,    0,    0,
   237,    0,    0,  271,    0,    0,  300,    0,    0,    0,    237,    0,    0,  271,    0,    0,  300,    0,    0,    0,
     0,    0,  329,    0,    0,    0,    0,    0,    0,    0,      0,    0,  329,    0,    0,    0,    0,    0,    0,    0,
     0,  358,  387,  417,    0,    0,  446,    0,    0,    0,      0,  358,  387,  417,    0,    0,  446,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  -26,    0,    0,    0,    0,    0,    0,    0,    0,    0,  463,    0,    0,    0,
     0,    0,    0,    0,   30,    0,   59,    0,   89,    0,      0,    0,    0,    0,   30,    0,   59,    0,   89,    0,
  118,    0,    0,    0,  148,  514,    0,    0,   45,    0,  118,    0,   60,    0,  148,  -28,    0,   62,   63,    0,
  -26,    0,    0,    0,  537,  565,    0,    0,    0,    0,  463,    0,    0,  594,  489,  512,    0,    0,    0,    0,
    0,    0,   50,    0,    0,    0,    0,    0,    0,    0,    0,    0,   64,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   52,    0,    0,    0,    0,    0,    0,    0,  623,  653,    0,    0,    0,    0,   65,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,};    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,};
 #if defined(__cplusplus) || defined(__STDC__)  #if defined(__cplusplus) || defined(__STDC__)
 const short yygindex[] =  const short yygindex[] =
 #else  #else
 short yygindex[] =  short yygindex[] =
 #endif  #endif
         {                                      0,          {                                      0,
  -17,    0,   27,   11,   54,  -64,   15,   64,    2,   34,  -11,    0,   39,   12,   66,  -72,   27,   76,   -4,   40,
   39,   84,   -3,  -27,  -18,  -21,    0,    0,   19,    0,   52,   98,   -1,  -23,   -7,   -8,    0,    0,   42,    0,
    0,    0,  -12,   -4,    0,   88,    0,    0,    0,    0,    0,    0,    8,   13,    0,  -13,   -9,    0,   99,    0,
   35,   40,   23,   37,    0,    0,    0,   46,   45,   44,   48,
 };  };
#define YYTABLESIZE 873#define YYTABLESIZE 932
 #if defined(__cplusplus) || defined(__STDC__)  #if defined(__cplusplus) || defined(__STDC__)
 const short yytable[] =  const short yytable[] =
 #else  #else
 short yytable[] =  short yytable[] =
 #endif  #endif
         {                                      26,          {                                      26,
   19,   26,   26,   26,   38,   39,   46,   34,   36,   24,   19,   26,   36,   94,   41,   34,   38,   39,   26,   24,
   71,   94,   60,   76,   40,   41,    2,   47,   60,    3,   71,   26,   60,   40,   41,   47,   60,    2,   60,   76,
    4,    5,   29,   71,   30,   31,  117,   32,   60,   67,    3,    4,    5,   71,   66,  117,   67,   34,   50,   76,
   43,  118,   66,   19,   67,   50,   42,   11,  112,  113,  118,   68,  124,   19,   29,   42,   30,   31,   11,   32,
   87,   53,  124,   33,   19,   56,   72,  119,   73,   74,   87,   53,   65,   56,   19,   69,  119,   72,   78,   73,
   65,   68,   69,   78,   80,   82,   77,   89,   72,   84,   74,   79,   43,  129,  130,   33,   89,   77,   81,  112,
   79,   81,   67,   83,  147,   85,   90,   88,   91,   71,  113,   81,   76,   80,   83,   82,   84,   85,   88,   90,
  103,   76,   60,  125,  127,  111,  128,  112,   99,   95,  159,   91,  103,   95,   71,   76,  125,   60,  111,  127,
  101,  133,  113,  135,  136,   48,    1,   67,   80,    2,   99,  128,  101,  112,  137,  113,  139,   76,   89,  140,
   50,   72,   49,  126,   97,   92,   75,   70,   86,  109,  130,   81,  129,  147,  148,    1,    2,  141,  142,  126,
   59,  132,  134,  131,   93,  148,  107,  102,    0,   64,   55,  109,   59,   56,   58,   57,   97,   92,   75,   70,
  130,    0,    0,   96,    0,    0,   72,   77,  120,  100,   93,   86,  136,  146,   59,  138,   81,   86,  120,  145,
   98,   80,    0,    0,    0,    0,    0,    0,    0,    0,   64,   89,  144,  135,   96,   98,    0,  134,  102,  107,
   100,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,   89,   26,    0,    0,
    86,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   80,   26,    0,    0,    0,    0,    0,    0,    0,   86,   12,    0,    0,    0,
   77,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,   77,   12,    0,    0,    0, 
    26,    0,    0,    0,    0,    0,    0,    0,    0,    0,     26,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,   26,    9,    0,    0,   12,      0,    0,    0,    0,    0,   26,    9,    0,    0,   12,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   25,    0,   25,   25,   25,    0,    0,    0,    0,    0,   25,    0,   25,   41,   41,
   46,   46,   29,    0,   30,   31,   10,   32,    0,    9,   29,    0,   30,   31,   25,   32,   10,   25,    0,    9,
    0,    0,   46,   46,   46,   46,   46,   46,   46,   46,   41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
   46,   46,   46,   33,   40,   41,   19,    0,   19,   46,   41,   33,   29,    0,   30,   31,   19,   32,   19,   41,
   46,   19,   19,   19,   19,   19,   19,   19,   19,   10,   41,   19,   19,   19,   19,   19,   19,   19,   19,   10,
    8,    0,    0,    0,    0,    0,   42,    0,    0,   19,    8,    0,    0,   33,    0,    0,   40,   41,    0,   19,
   19,   19,   19,   19,   19,   67,    0,   67,    0,    0,   19,   19,   19,   19,   19,   76,    0,   76,    0,    0,
   67,   67,   67,   67,   67,   67,   67,   67,    0,   11,   76,   76,   76,   76,   76,   76,   76,   76,   42,   11,
    0,    0,    0,    8,    0,    0,    0,    0,   67,   67,    0,    0,    0,    8,    0,    0,    0,    0,   76,   76,
   67,   67,   67,   67,   72,    0,   72,    0,    0,   72,   76,   76,   76,   76,   81,    0,   81,    0,    0,   81,
   72,   72,   72,   72,   72,   72,   72,    0,    7,    0,   81,   81,   81,   81,   81,   81,   81,    0,    7,    0,
    0,    0,   11,    0,    0,    0,    0,   72,   72,   72,    0,    0,   11,    0,    0,    0,    0,   81,   81,   81,
   72,   72,   72,  117,   80,    0,   80,    0,  118,   80,   81,   81,   81,  117,   89,    0,   89,    0,  118,   89,
   80,   80,   80,   80,   80,   80,   80,   15,    0,    0,   89,   89,   89,   89,   89,   89,   89,   15,    0,    0,
    0,    7,    0,    0,  119,    0,    0,   80,   80,   80,    0,    7,    0,    0,  119,    0,    0,   89,   89,   89,
   80,   80,   80,   77,    0,   77,    0,    0,   77,   77,   89,   89,   89,   86,    0,   86,    0,    0,   86,   86,
   77,   77,   77,   77,   77,   77,   13,    0,    0,    0,   86,   86,   86,   86,   86,   86,   13,    0,    0,    0,
   15,    0,    0,    0,    0,    0,   77,   77,   77,   77,   15,    0,    0,    0,    0,    0,   86,   86,   86,   86,
   77,   77,    0,   26,    0,   26,    0,    0,   26,   26,   86,   86,    0,   26,    0,   26,    0,    0,   26,   26,
    26,   26,   26,   26,   26,   26,   14,    0,    0,   13,     26,   26,   26,   26,   26,   26,   14,    0,    0,   13,
     0,    0,    0,    0,    0,    0,   26,   26,   26,   26,      0,    0,    0,    0,    0,    0,   26,   26,   26,   26,
    26,   26,   12,    0,   12,    0,    0,   12,   12,   12,     26,   26,   12,    0,   12,    0,    0,   12,   12,   12,
Line 349  short yytable[] = Line 363  short yytable[] =
    12,    0,    9,    0,    9,    0,    0,    9,    9,    9,     12,    0,    9,    0,    9,    0,    0,    9,    9,    9,
     9,    9,    9,    9,    9,    0,    0,    0,   16,    0,      9,    9,    9,    9,    9,    0,    0,    0,   16,    0,
     0,    0,    0,    0,    0,    9,    9,    9,    9,    9,      0,    0,    0,    0,    0,    9,    9,    9,    9,    9,
    9,    0,   10,    0,   10,    0,    0,   10,   10,   10,    9,    0,   10,    0,   10,   53,    0,   10,   10,   10,
   10,   10,   10,   10,   10,    0,    0,   17,    0,    0,   10,   10,   10,   10,   10,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,   10,   10,   10,   10,   10,      0,    0,    0,    0,    0,   10,   10,   10,   10,   10,
   10,    0,    0,   43,    0,    0,    8,    0,    8,    0,   10,   42,    0,    0,    0,    0,    8,    0,    8,    0,
     0,    8,    8,    8,    8,    8,    8,    8,    8,    0,      0,    8,    8,    8,    8,    8,    8,    8,    8,    0,
    0,    0,    0,    0,    0,    0,   41,    0,    0,    8,    0,    0,    0,    0,   43,   17,    0,    0,    0,    8,
     8,    8,    8,    8,    8,   11,    0,   11,    0,    0,      8,    8,    8,    8,    8,   11,    0,   11,    0,    0,
   11,   11,   11,   11,   11,   11,   11,   11,    0,   42,   11,   11,   11,   11,   11,   11,   11,   11,    0,    0,
    0,    0,    0,   17,    0,    0,    0,    0,   11,   11,  108,    0,    0,   17,    0,    0,    0,    0,   11,   11,
   11,   11,   11,   11,    7,    0,    7,    0,    0,    7,   11,   11,   11,   11,    7,   17,    7,    0,    0,    7,
    7,    7,    7,    7,    7,    7,    7,   43,  108,   34,    7,    7,    7,    7,    7,    7,    7,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    7,    7,    7,    0,   43,    0,    0,    0,    0,    0,    7,    7,    7,
     7,    7,    7,   15,    0,   15,    0,    0,   15,   15,      7,    7,    7,   15,    0,   15,    0,    0,   15,   15,
   15,   15,   15,   15,   15,   15,   17,    0,    0,    0,   15,   15,   15,   15,   15,   15,   48,    0,    0,    0,
     0,    0,    0,    0,    0,    0,   15,   15,   15,   15,      0,    0,    0,    0,    0,    0,   15,   15,   15,   15,
    15,   15,   13,    0,   13,    0,    0,   13,   13,   13,     15,   15,   13,    0,   13,    0,    0,   13,   13,   13,
   13,   13,   13,   13,   13,    0,    0,    0,    0,    0,   13,   13,   13,   13,   13,   49,    0,    0,    0,    0,
     0,    0,    0,    0,    0,   13,   13,   13,   13,   13,      0,    0,    0,    0,    0,   13,   13,   13,   13,   13,
    13,    0,   14,    0,   14,    0,    0,   14,   14,   14,     13,    0,   14,    0,   14,    0,    0,   14,   14,   14,
   14,   14,   14,   14,   14,    0,    0,    0,    0,    0,   14,   14,   14,   14,   14,   50,    0,    0,    0,    0,
     0,    0,    0,    0,    0,   14,   14,   14,   14,   14,      0,    0,    0,    0,    0,   14,   14,   14,   14,   14,
    14,   16,    0,   16,    0,    0,   16,   16,   16,   16,     14,   16,    0,   16,    0,    0,   16,   16,   16,   16,
   16,   16,   16,   16,    0,    0,    0,    0,    0,    0,   16,   16,   16,   16,    0,    0,    0,    0,    0,   53,
    0,    0,    0,    0,   16,   16,   16,   16,   16,   16,   53,    0,    0,    0,   16,   16,   16,   16,   16,   16,
    1,    0,    2,    0,    0,    3,    4,    5,    6,    7,    0,   53,   53,   53,   53,   53,   53,   53,   53,   53,
    8,    9,   10,    0,    0,    0,    0,   40,   41,    0,   53,   53,    0,    0,    0,   42,   42,    0,   53,   53,
    0,    0,    0,   11,   12,   13,   14,   15,   16,  137,   53,   53,    0,    0,    0,    0,    0,   42,   42,   42,
  138,  139,  140,  141,  142,  143,  144,  145,  146,   42,   42,   42,   42,   42,   42,   42,   42,   42,   43,   43,
   41,   41,    0,    0,    0,    0,    0,    0,    0,    0,    2,    0,    0,    3,    4,    5,   42,   42,    0,    0,
    0,    0,   41,   41,   41,   41,   41,   41,   41,   41,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
   41,   41,   41,   42,   42,    0,    0,    0,    2,    0,   43,   11,    0,    0,    0,    0,    1,    0,    2,   43,
    0,    3,    4,    5,    0,   42,   42,   42,   42,   42,   43,    3,    4,    5,    6,    7,    8,    9,   10,    0,
   42,   42,   42,   42,   42,   42,    0,    0,    0,   11,    2,    0,    0,    3,    4,    5,    0,    0,    0,   11,
    0,   43,   43,    0,   29,    0,   30,   31,    0,   32,   12,   13,   14,   15,   16,   40,   41,    0,    0,    0,
    0,    0,    0,   43,   43,   43,   43,   43,   43,   43,    0,   11,    0,    0,    0,    0,    0,  149,  150,  151,
   43,   43,   43,   43,    0,   33,    0,    0,    0,    0,  152,  153,  154,  155,  156,  157,  158,   42,    0,    0,
    0,    2,    0,    0,    3,    4,    5,    0,    0,    0,   48,   48,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   48,   48,   48,   48,   48,   48,   48,   48,
    0,    0,   11,   48,   48,   48,    0,    0,    0,    0,    0,    0,   49,
    49,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,   49,   49,   49,   49,   49,   49,   49,   49,   49,
    49,   49,    0,    0,    0,    0,    0,    0,    0,   50,
    50,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,   50,   50,   50,   50,   50,   50,   50,   50,   50,
    50,   50,
 };  };
 #if defined(__cplusplus) || defined(__STDC__)  #if defined(__cplusplus) || defined(__STDC__)
 const short yycheck[] =  const short yycheck[] =
Line 395  const short yycheck[] = Line 415  const short yycheck[] =
 short yycheck[] =  short yycheck[] =
 #endif  #endif
         {                                      33,          {                                      33,
    0,   33,   33,   33,    8,    9,   33,   33,    7,  280,    0,   33,    7,   76,   33,   33,    8,    9,   33,  280,
   44,   76,   44,   44,  257,  258,  258,  258,   44,  261,   44,   33,   44,  257,  258,  258,   44,  258,   44,   44,
  262,  263,  258,   44,  260,  261,  258,  263,   44,    0,  261,  262,  263,   44,   43,  258,   45,   33,  258,    0,
   33,  263,   43,   33,   45,  258,  279,  279,  286,  287,  263,  259,   58,   33,  258,  279,  260,  261,  279,  263,
   61,  258,   58,  279,   44,  258,   36,  279,   38,   39,   61,  258,   61,  258,   44,   44,  279,   36,   61,   38,
   61,  259,   44,   61,   61,   61,   46,  263,    0,   61,   39,   58,   33,  288,  289,  279,  263,   46,    0,  286,
   58,   58,   33,   58,  129,   58,  263,   58,  263,   44,  287,   58,   33,   61,   58,   61,   61,   58,   58,  263,
   40,   44,   44,   41,   61,   44,   61,  286,   82,   78,  143,  263,   40,   78,   44,   44,   41,   44,   44,   61,
   84,   44,  287,  263,  263,   41,    0,   58,    0,    0,   82,   61,   84,  286,   44,  287,  263,   58,    0,  263,
   41,   33,   41,  111,   80,   69,   43,   34,   60,  103,  289,   33,  288,  263,  263,    0,    0,   61,   61,  111,
   17,  120,  124,  116,   71,  133,   88,   85,   -1,   22,   41,  103,   41,   41,   41,   41,   80,   69,   43,   34,
  115,   -1,   -1,   79,   -1,   -1,   58,    0,   33,   83,   71,   60,  120,  137,   17,  124,   58,    0,   33,  133,
   81,   33,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   22,   33,  132,  116,   79,   81,   -1,  115,   85,   88,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   83,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -1,   -1,   -1,   -1,   -1,   -1,   58,    0,   -1,   -1,     -1,   -1,   -1,   -1,   -1,   -1,   58,    0,   -1,   -1,
    33,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,     33,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,     -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
Line 417  short yycheck[] = Line 437  short yycheck[] =
    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,     -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -1,   -1,   -1,   -1,   -1,   58,    0,   -1,   -1,   33,     -1,   -1,   -1,   -1,   -1,   58,    0,   -1,   -1,   33,
    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,     -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  259,   -1,  259,  259,  259,   -1,   -1,   -1,   -1,   -1,  259,   -1,  259,  257,  258,
  257,  258,  258,   -1,  260,  261,    0,  263,   -1,   33,  258,   -1,  260,  261,  259,  263,    0,  259,   -1,   33,
   -1,   -1,  269,  270,  271,  272,  273,  274,  275,  276,  269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
  277,  278,  279,  279,  257,  258,  256,   -1,  258,  286,  279,  279,  258,   -1,  260,  261,  256,  263,  258,  288,
  287,  261,  262,  263,  264,  265,  266,  267,  268,   33,  289,  261,  262,  263,  264,  265,  266,  267,  268,   33,
    0,   -1,   -1,   -1,   -1,   -1,  279,   -1,   -1,  279,    0,   -1,   -1,  279,   -1,   -1,  257,  258,   -1,  279,
   280,  281,  282,  283,  284,  256,   -1,  258,   -1,   -1,    280,  281,  282,  283,  284,  256,   -1,  258,   -1,   -1,
  261,  262,  263,  264,  265,  266,  267,  268,   -1,    0,  261,  262,  263,  264,  265,  266,  267,  268,  279,    0,
    -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,  279,  280,     -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,  279,  280,
   281,  282,  283,  284,  256,   -1,  258,   -1,   -1,  261,    281,  282,  283,  284,  256,   -1,  258,   -1,   -1,  261,
   262,  263,  264,  265,  266,  267,  268,   -1,    0,   -1,    262,  263,  264,  265,  266,  267,  268,   -1,    0,   -1,
Line 444  short yycheck[] = Line 464  short yycheck[] =
   284,   -1,  256,   -1,  258,   -1,   -1,  261,  262,  263,    284,   -1,  256,   -1,  258,   -1,   -1,  261,  262,  263,
   264,  265,  266,  267,  268,   -1,   -1,   -1,   33,   -1,    264,  265,  266,  267,  268,   -1,   -1,   -1,   33,   -1,
    -1,   -1,   -1,   -1,   -1,  279,  280,  281,  282,  283,     -1,   -1,   -1,   -1,   -1,  279,  280,  281,  282,  283,
  284,   -1,  256,   -1,  258,   -1,   -1,  261,  262,  263,  284,   -1,  256,   -1,  258,   33,   -1,  261,  262,  263,
  264,  265,  266,  267,  268,   -1,   -1,   33,   -1,   -1,  264,  265,  266,  267,  268,   -1,   -1,   -1,   -1,   -1,
    -1,   -1,   -1,   -1,   -1,  279,  280,  281,  282,  283,     -1,   -1,   -1,   -1,   -1,  279,  280,  281,  282,  283,
  284,   -1,   -1,   33,   -1,   -1,  256,   -1,  258,   -1,  284,   33,   -1,   -1,   -1,   -1,  256,   -1,  258,   -1,
    -1,  261,  262,  263,  264,  265,  266,  267,  268,   -1,     -1,  261,  262,  263,  264,  265,  266,  267,  268,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,  279,   -1,   -1,   -1,   -1,   33,   33,   -1,   -1,   -1,  279,
   280,  281,  282,  283,  284,  256,   -1,  258,   -1,   -1,    280,  281,  282,  283,  284,  256,   -1,  258,   -1,   -1,
  261,  262,  263,  264,  265,  266,  267,  268,   -1,   33,  261,  262,  263,  264,  265,  266,  267,  268,   -1,   -1,
   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,  279,  280,   58,   -1,   -1,   33,   -1,   -1,   -1,   -1,  279,  280,
  281,  282,  283,  284,  256,   -1,  258,   -1,   -1,  261,  281,  282,  283,  284,  256,   33,  258,   -1,   -1,  261,
  262,  263,  264,  265,  266,  267,  268,   33,   58,   33,  262,  263,  264,  265,  266,  267,  268,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  279,  280,  281,   -1,   33,   -1,   -1,   -1,   -1,   -1,  279,  280,  281,
   282,  283,  284,  256,   -1,  258,   -1,   -1,  261,  262,    282,  283,  284,  256,   -1,  258,   -1,   -1,  261,  262,
   263,  264,  265,  266,  267,  268,   33,   -1,   -1,   -1,    263,  264,  265,  266,  267,  268,   33,   -1,   -1,   -1,
    -1,   -1,   -1,   -1,   -1,   -1,  279,  280,  281,  282,     -1,   -1,   -1,   -1,   -1,   -1,  279,  280,  281,  282,
   283,  284,  256,   -1,  258,   -1,   -1,  261,  262,  263,    283,  284,  256,   -1,  258,   -1,   -1,  261,  262,  263,
  264,  265,  266,  267,  268,   -1,   -1,   -1,   -1,   -1,  264,  265,  266,  267,  268,   33,   -1,   -1,   -1,   -1,
    -1,   -1,   -1,   -1,   -1,  279,  280,  281,  282,  283,     -1,   -1,   -1,   -1,   -1,  279,  280,  281,  282,  283,
   284,   -1,  256,   -1,  258,   -1,   -1,  261,  262,  263,    284,   -1,  256,   -1,  258,   -1,   -1,  261,  262,  263,
  264,  265,  266,  267,  268,   -1,   -1,   -1,   -1,   -1,  264,  265,  266,  267,  268,   33,   -1,   -1,   -1,   -1,
    -1,   -1,   -1,   -1,   -1,  279,  280,  281,  282,  283,     -1,   -1,   -1,   -1,   -1,  279,  280,  281,  282,  283,
   284,  256,   -1,  258,   -1,   -1,  261,  262,  263,  264,    284,  256,   -1,  258,   -1,   -1,  261,  262,  263,  264,
  265,  266,  267,  268,   -1,   -1,   -1,   -1,   -1,   -1,  265,  266,  267,  268,   -1,   -1,   -1,   -1,   -1,  257,
   -1,   -1,   -1,   -1,  279,  280,  281,  282,  283,  284,  258,   -1,   -1,   -1,  279,  280,  281,  282,  283,  284,
  256,   -1,  258,   -1,   -1,  261,  262,  263,  264,  265,   -1,  269,  270,  271,  272,  273,  274,  275,  276,  277,
  266,  267,  268,   -1,   -1,   -1,   -1,  257,  258,   -1,  278,  279,   -1,   -1,   -1,  257,  258,   -1,  286,  287,
   -1,   -1,   -1,  279,  280,  281,  282,  283,  284,  269,  288,  289,   -1,   -1,   -1,   -1,   -1,  269,  270,  271,
  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,  272,  273,  274,  275,  276,  277,  278,  279,  257,  258,
   258,   -1,   -1,  261,  262,  263,  288,  289,   -1,   -1,
   269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
   279,  279,   -1,   -1,   -1,   -1,  256,   -1,  258,  288,
   289,  261,  262,  263,  264,  265,  266,  267,  268,   -1,
   258,   -1,   -1,  261,  262,  263,   -1,   -1,   -1,  279,
   280,  281,  282,  283,  284,  257,  258,   -1,   -1,   -1,
    -1,  279,   -1,   -1,   -1,   -1,   -1,  269,  270,  271,
   272,  273,  274,  275,  276,  277,  278,  279,   -1,   -1,
   257,  258,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    257,  258,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -1,   -1,  269,  270,  271,  272,  273,  274,  275,  276,     -1,   -1,  269,  270,  271,  272,  273,  274,  275,  276,
  277,  278,  279,  257,  258,   -1,   -1,   -1,  258,   -1,  277,  278,  279,   -1,   -1,   -1,   -1,   -1,   -1,  257,
   -1,  261,  262,  263,   -1,  269,  270,  271,  272,  273,  258,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  274,  275,  276,  277,  278,  279,   -1,   -1,   -1,  279,   -1,  269,  270,  271,  272,  273,  274,  275,  276,  277,
   -1,  257,  258,   -1,  258,   -1,  260,  261,   -1,  263,  278,  279,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,
   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,  275,  258,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  276,  277,  278,  279,   -1,  279,   -1,   -1,   -1,   -1,   -1,  269,  270,  271,  272,  273,  274,  275,  276,  277,
   -1,  258,   -1,   -1,  261,  262,  263,   -1,   -1,   -1,  278,  279,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,  279, 
 };  };
 #define YYFINAL 18  #define YYFINAL 18
 #ifndef YYDEBUG  #ifndef YYDEBUG
 #define YYDEBUG 0  #define YYDEBUG 0
 #endif  #endif
#define YYMAXTOKEN 287#define YYMAXTOKEN 290
 #if YYDEBUG  #if YYDEBUG
 #if defined(__cplusplus) || defined(__STDC__)  #if defined(__cplusplus) || defined(__STDC__)
 const char * const yyname[] =  const char * const yyname[] =
Line 507  char *yyname[] = Line 533  char *yyname[] =
 "DEFAULTS_HOST","DEFAULTS_USER","DEFAULTS_RUNAS","DEFAULTS_CMND","NOPASSWD",  "DEFAULTS_HOST","DEFAULTS_USER","DEFAULTS_RUNAS","DEFAULTS_CMND","NOPASSWD",
 "PASSWD","NOEXEC","EXEC","SETENV","NOSETENV","LOG_INPUT","NOLOG_INPUT",  "PASSWD","NOEXEC","EXEC","SETENV","NOSETENV","LOG_INPUT","NOLOG_INPUT",
 "LOG_OUTPUT","NOLOG_OUTPUT","ALL","COMMENT","HOSTALIAS","CMNDALIAS","USERALIAS",  "LOG_OUTPUT","NOLOG_OUTPUT","ALL","COMMENT","HOSTALIAS","CMNDALIAS","USERALIAS",
"RUNASALIAS","ERROR","TYPE","ROLE","RUNASALIAS","ERROR","TYPE","ROLE","PRIVS","LIMITPRIVS","MYSELF",
 };  };
 #if defined(__cplusplus) || defined(__STDC__)  #if defined(__cplusplus) || defined(__STDC__)
 const char * const yyrule[] =  const char * const yyrule[] =
Line 550  char *yyrule[] = Line 576  char *yyrule[] =
 "host : WORD",  "host : WORD",
 "cmndspeclist : cmndspec",  "cmndspeclist : cmndspec",
 "cmndspeclist : cmndspeclist ',' cmndspec",  "cmndspeclist : cmndspeclist ',' cmndspec",
"cmndspec : runasspec selinux cmndtag opcmnd","cmndspec : runasspec selinux solarisprivs cmndtag opcmnd",
 "opcmnd : cmnd",  "opcmnd : cmnd",
 "opcmnd : '!' cmnd",  "opcmnd : '!' cmnd",
 "rolespec : ROLE '=' WORD",  "rolespec : ROLE '=' WORD",
Line 560  char *yyrule[] = Line 586  char *yyrule[] =
 "selinux : typespec",  "selinux : typespec",
 "selinux : rolespec typespec",  "selinux : rolespec typespec",
 "selinux : typespec rolespec",  "selinux : typespec rolespec",
   "privsspec : PRIVS '=' WORD",
   "limitprivsspec : LIMITPRIVS '=' WORD",
   "solarisprivs :",
   "solarisprivs : privsspec",
   "solarisprivs : limitprivsspec",
   "solarisprivs : privsspec limitprivsspec",
   "solarisprivs : limitprivsspec privsspec",
 "runasspec :",  "runasspec :",
 "runasspec : '(' runaslist ')'",  "runasspec : '(' runaslist ')'",
   "runaslist :",
 "runaslist : userlist",  "runaslist : userlist",
 "runaslist : userlist ':' grouplist",  "runaslist : userlist ':' grouplist",
 "runaslist : ':' grouplist",  "runaslist : ':' grouplist",
   "runaslist : ':'",
 "cmndtag :",  "cmndtag :",
 "cmndtag : cmndtag NOPASSWD",  "cmndtag : cmndtag NOPASSWD",
 "cmndtag : cmndtag PASSWD",  "cmndtag : cmndtag PASSWD",
Line 638  short *yyss; Line 673  short *yyss;
 short *yysslim;  short *yysslim;
 YYSTYPE *yyvs;  YYSTYPE *yyvs;
 int yystacksize;  int yystacksize;
#line 611 "gram.y"#line 674 "gram.y"
 static struct defaults *  static struct defaults *
 new_default(char *var, char *val, int op)  new_default(char *var, char *val, int op)
 {  {
Line 727  add_userspec(struct member *members, struct privilege  Line 762  add_userspec(struct member *members, struct privilege 
  * the current sudoers file to path.   * the current sudoers file to path.
  */   */
 void  void
init_parser(const char *path, int quiet)init_parser(const char *path, bool quiet)
 {  {
     struct defaults *d;      struct defaults *d;
     struct member *m, *binding;      struct member *m, *binding;
Line 747  init_parser(const char *path, int quiet) Line 782  init_parser(const char *path, int quiet)
 #ifdef HAVE_SELINUX  #ifdef HAVE_SELINUX
             char *role = NULL, *type = NULL;              char *role = NULL, *type = NULL;
 #endif /* HAVE_SELINUX */  #endif /* HAVE_SELINUX */
   #ifdef HAVE_PRIV_SET
               char *privs = NULL, *limitprivs = NULL;
   #endif /* HAVE_PRIV_SET */
   
             while ((m = tq_pop(&priv->hostlist)) != NULL) {              while ((m = tq_pop(&priv->hostlist)) != NULL) {
                 efree(m->name);                  efree(m->name);
Line 764  init_parser(const char *path, int quiet) Line 802  init_parser(const char *path, int quiet)
                     efree(cs->type);                      efree(cs->type);
                 }                  }
 #endif /* HAVE_SELINUX */  #endif /* HAVE_SELINUX */
   #ifdef HAVE_PRIV_SET
                   /* Only free the first instance of privs/limitprivs. */
                   if (cs->privs != privs) {
                       privs = cs->privs;
                       efree(cs->privs);
                   }
                   if (cs->limitprivs != limitprivs) {
                       limitprivs = cs->limitprivs;
                       efree(cs->limitprivs);
                   }
   #endif /* HAVE_PRIV_SET */
                 if (tq_last(&cs->runasuserlist) != runasuser) {                  if (tq_last(&cs->runasuserlist) != runasuser) {
                     runasuser = tq_last(&cs->runasuserlist);                      runasuser = tq_last(&cs->runasuserlist);
                     while ((m = tq_pop(&cs->runasuserlist)) != NULL) {                      while ((m = tq_pop(&cs->runasuserlist)) != NULL) {
Line 827  init_parser(const char *path, int quiet) Line 876  init_parser(const char *path, int quiet)
   
     debug_return;      debug_return;
 }  }
#line 778 "gram.c"#line 827 "gram.c"
 /* allocate initial stack or double stack size, up to YYMAXDEPTH */  /* allocate initial stack or double stack size, up to YYMAXDEPTH */
 #if defined(__cplusplus) || defined(__STDC__)  #if defined(__cplusplus) || defined(__STDC__)
 static int yygrowstack(void)  static int yygrowstack(void)
Line 839  static int yygrowstack() Line 888  static int yygrowstack()
     short *newss;      short *newss;
     YYSTYPE *newvs;      YYSTYPE *newvs;
   
    if ((newsize = yystacksize) == 0)    newsize = yystacksize ? yystacksize : YYINITSTACKSIZE;
        newsize = YYINITSTACKSIZE;    if (newsize >= YYMAXDEPTH)
    else if (newsize >= YYMAXDEPTH) 
         return -1;          return -1;
     else if ((newsize *= 2) > YYMAXDEPTH)      else if ((newsize *= 2) > YYMAXDEPTH)
         newsize = YYMAXDEPTH;          newsize = YYMAXDEPTH;
     i = yyssp - yyss;  
 #ifdef SIZE_MAX  #ifdef SIZE_MAX
 #define YY_SIZE_MAX SIZE_MAX  #define YY_SIZE_MAX SIZE_MAX
 #else  #else
 #define YY_SIZE_MAX 0x7fffffff  #define YY_SIZE_MAX 0x7fffffff
 #endif  #endif
    if (!newsize || YY_SIZE_MAX / newsize < sizeof *newss)    if (YY_SIZE_MAX / newsize < sizeof *newss)
         goto bail;          goto bail;
       i = yyssp - yyss;
     newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) :      newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) :
       (short *)malloc(newsize * sizeof *newss); /* overflow check above */        (short *)malloc(newsize * sizeof *newss); /* overflow check above */
     if (newss == NULL)      if (newss == NULL)
         goto bail;          goto bail;
     yyss = newss;      yyss = newss;
     yyssp = newss + i;      yyssp = newss + i;
     if (!newsize || YY_SIZE_MAX / newsize < sizeof *newvs)  
         goto bail;  
     newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) :      newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) :
       (YYSTYPE *)malloc(newsize * sizeof *newvs); /* overflow check above */        (YYSTYPE *)malloc(newsize * sizeof *newvs); /* overflow check above */
     if (newvs == NULL)      if (newvs == NULL)
Line 1033  yyreduce: Line 1079  yyreduce:
     switch (yyn)      switch (yyn)
     {      {
 case 1:  case 1:
#line 192 "gram.y"#line 204 "gram.y"
 { ; }  { ; }
 break;  break;
 case 5:  case 5:
#line 200 "gram.y"#line 212 "gram.y"
 {  {
                             ;                              ;
                         }                          }
 break;  break;
 case 6:  case 6:
#line 203 "gram.y"#line 215 "gram.y"
 {  {
                             yyerrok;                              yyerrok;
                         }                          }
 break;  break;
 case 7:  case 7:
#line 206 "gram.y"#line 218 "gram.y"
 {  {
                             add_userspec(yyvsp[-1].member, yyvsp[0].privilege);                              add_userspec(yyvsp[-1].member, yyvsp[0].privilege);
                         }                          }
 break;  break;
 case 8:  case 8:
#line 209 "gram.y"#line 221 "gram.y"
 {  {
                             ;                              ;
                         }                          }
 break;  break;
 case 9:  case 9:
#line 212 "gram.y"#line 224 "gram.y"
 {  {
                             ;                              ;
                         }                          }
 break;  break;
 case 10:  case 10:
#line 215 "gram.y"#line 227 "gram.y"
 {  {
                             ;                              ;
                         }                          }
 break;  break;
 case 11:  case 11:
#line 218 "gram.y"#line 230 "gram.y"
 {  {
                             ;                              ;
                         }                          }
 break;  break;
 case 12:  case 12:
#line 221 "gram.y"#line 233 "gram.y"
 {  {
                             add_defaults(DEFAULTS, NULL, yyvsp[0].defaults);                              add_defaults(DEFAULTS, NULL, yyvsp[0].defaults);
                         }                          }
 break;  break;
 case 13:  case 13:
#line 224 "gram.y"#line 236 "gram.y"
 {  {
                             add_defaults(DEFAULTS_USER, yyvsp[-1].member, yyvsp[0].defaults);                              add_defaults(DEFAULTS_USER, yyvsp[-1].member, yyvsp[0].defaults);
                         }                          }
 break;  break;
 case 14:  case 14:
#line 227 "gram.y"#line 239 "gram.y"
 {  {
                             add_defaults(DEFAULTS_RUNAS, yyvsp[-1].member, yyvsp[0].defaults);                              add_defaults(DEFAULTS_RUNAS, yyvsp[-1].member, yyvsp[0].defaults);
                         }                          }
 break;  break;
 case 15:  case 15:
#line 230 "gram.y"#line 242 "gram.y"
 {  {
                             add_defaults(DEFAULTS_HOST, yyvsp[-1].member, yyvsp[0].defaults);                              add_defaults(DEFAULTS_HOST, yyvsp[-1].member, yyvsp[0].defaults);
                         }                          }
 break;  break;
 case 16:  case 16:
#line 233 "gram.y"#line 245 "gram.y"
 {  {
                             add_defaults(DEFAULTS_CMND, yyvsp[-1].member, yyvsp[0].defaults);                              add_defaults(DEFAULTS_CMND, yyvsp[-1].member, yyvsp[0].defaults);
                         }                          }
 break;  break;
 case 18:  case 18:
#line 239 "gram.y"#line 251 "gram.y"
 {  {
                             list_append(yyvsp[-2].defaults, yyvsp[0].defaults);                              list_append(yyvsp[-2].defaults, yyvsp[0].defaults);
                             yyval.defaults = yyvsp[-2].defaults;                              yyval.defaults = yyvsp[-2].defaults;
                         }                          }
 break;  break;
 case 19:  case 19:
#line 245 "gram.y"#line 257 "gram.y"
 {  {
                             yyval.defaults = new_default(yyvsp[0].string, NULL, true);                              yyval.defaults = new_default(yyvsp[0].string, NULL, true);
                         }                          }
 break;  break;
 case 20:  case 20:
#line 248 "gram.y"#line 260 "gram.y"
 {  {
                             yyval.defaults = new_default(yyvsp[0].string, NULL, false);                              yyval.defaults = new_default(yyvsp[0].string, NULL, false);
                         }                          }
 break;  break;
 case 21:  case 21:
#line 251 "gram.y"#line 263 "gram.y"
 {  {
                             yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, true);                              yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, true);
                         }                          }
 break;  break;
 case 22:  case 22:
#line 254 "gram.y"#line 266 "gram.y"
 {  {
                             yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '+');                              yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '+');
                         }                          }
 break;  break;
 case 23:  case 23:
#line 257 "gram.y"#line 269 "gram.y"
 {  {
                             yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '-');                              yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '-');
                         }                          }
 break;  break;
 case 25:  case 25:
#line 263 "gram.y"#line 275 "gram.y"
 {  {
                             list_append(yyvsp[-2].privilege, yyvsp[0].privilege);                              list_append(yyvsp[-2].privilege, yyvsp[0].privilege);
                             yyval.privilege = yyvsp[-2].privilege;                              yyval.privilege = yyvsp[-2].privilege;
                         }                          }
 break;  break;
 case 26:  case 26:
#line 269 "gram.y"#line 281 "gram.y"
 {  {
                             struct privilege *p = ecalloc(1, sizeof(*p));                              struct privilege *p = ecalloc(1, sizeof(*p));
                             list2tq(&p->hostlist, yyvsp[-2].member);                              list2tq(&p->hostlist, yyvsp[-2].member);
Line 1164  case 26: Line 1210  case 26:
                         }                          }
 break;  break;
 case 27:  case 27:
#line 279 "gram.y"#line 291 "gram.y"
 {  {
                             yyval.member = yyvsp[0].member;                              yyval.member = yyvsp[0].member;
                             yyval.member->negated = false;                              yyval.member->negated = false;
                         }                          }
 break;  break;
 case 28:  case 28:
#line 283 "gram.y"#line 295 "gram.y"
 {  {
                             yyval.member = yyvsp[0].member;                              yyval.member = yyvsp[0].member;
                             yyval.member->negated = true;                              yyval.member->negated = true;
                         }                          }
 break;  break;
 case 29:  case 29:
#line 289 "gram.y"#line 301 "gram.y"
 {  {
                             yyval.member = new_member(yyvsp[0].string, ALIAS);                              yyval.member = new_member(yyvsp[0].string, ALIAS);
                         }                          }
 break;  break;
 case 30:  case 30:
#line 292 "gram.y"#line 304 "gram.y"
 {  {
                             yyval.member = new_member(NULL, ALL);                              yyval.member = new_member(NULL, ALL);
                         }                          }
 break;  break;
 case 31:  case 31:
#line 295 "gram.y"#line 307 "gram.y"
 {  {
                             yyval.member = new_member(yyvsp[0].string, NETGROUP);                              yyval.member = new_member(yyvsp[0].string, NETGROUP);
                         }                          }
 break;  break;
 case 32:  case 32:
#line 298 "gram.y"#line 310 "gram.y"
 {  {
                             yyval.member = new_member(yyvsp[0].string, NTWKADDR);                              yyval.member = new_member(yyvsp[0].string, NTWKADDR);
                         }                          }
 break;  break;
 case 33:  case 33:
#line 301 "gram.y"#line 313 "gram.y"
 {  {
                             yyval.member = new_member(yyvsp[0].string, WORD);                              yyval.member = new_member(yyvsp[0].string, WORD);
                         }                          }
 break;  break;
 case 35:  case 35:
#line 307 "gram.y"#line 319 "gram.y"
 {  {
                             list_append(yyvsp[-2].cmndspec, yyvsp[0].cmndspec);                              list_append(yyvsp[-2].cmndspec, yyvsp[0].cmndspec);
 #ifdef HAVE_SELINUX  #ifdef HAVE_SELINUX
Line 1218  case 35: Line 1264  case 35:
                             if (yyvsp[0].cmndspec->type == NULL)                              if (yyvsp[0].cmndspec->type == NULL)
                                 yyvsp[0].cmndspec->type = yyvsp[0].cmndspec->prev->type;                                  yyvsp[0].cmndspec->type = yyvsp[0].cmndspec->prev->type;
 #endif /* HAVE_SELINUX */  #endif /* HAVE_SELINUX */
   #ifdef HAVE_PRIV_SET
                               /* propagate privs & limitprivs */
                               if (yyvsp[0].cmndspec->privs == NULL)
                                   yyvsp[0].cmndspec->privs = yyvsp[0].cmndspec->prev->privs;
                               if (yyvsp[0].cmndspec->limitprivs == NULL)
                                   yyvsp[0].cmndspec->limitprivs = yyvsp[0].cmndspec->prev->limitprivs;
   #endif /* HAVE_PRIV_SET */
                             /* propagate tags and runas list */                              /* propagate tags and runas list */
                             if (yyvsp[0].cmndspec->tags.nopasswd == UNSPEC)                              if (yyvsp[0].cmndspec->tags.nopasswd == UNSPEC)
                                 yyvsp[0].cmndspec->tags.nopasswd = yyvsp[0].cmndspec->prev->tags.nopasswd;                                  yyvsp[0].cmndspec->tags.nopasswd = yyvsp[0].cmndspec->prev->tags.nopasswd;
Line 1241  case 35: Line 1294  case 35:
                         }                          }
 break;  break;
 case 36:  case 36:
#line 339 "gram.y"#line 358 "gram.y"
 {  {
                             struct cmndspec *cs = ecalloc(1, sizeof(*cs));                              struct cmndspec *cs = ecalloc(1, sizeof(*cs));
                            if (yyvsp[-3].runas != NULL) {                            if (yyvsp[-4].runas != NULL) {
                                list2tq(&cs->runasuserlist, yyvsp[-3].runas->runasusers);                                list2tq(&cs->runasuserlist, yyvsp[-4].runas->runasusers);
                                list2tq(&cs->runasgrouplist, yyvsp[-3].runas->runasgroups);                                list2tq(&cs->runasgrouplist, yyvsp[-4].runas->runasgroups);
                                efree(yyvsp[-3].runas);                                efree(yyvsp[-4].runas);
                             } else {                              } else {
                                 tq_init(&cs->runasuserlist);                                  tq_init(&cs->runasuserlist);
                                 tq_init(&cs->runasgrouplist);                                  tq_init(&cs->runasgrouplist);
                             }                              }
 #ifdef HAVE_SELINUX  #ifdef HAVE_SELINUX
                            cs->role = yyvsp[-2].seinfo.role;                            cs->role = yyvsp[-3].seinfo.role;
                            cs->type = yyvsp[-2].seinfo.type;                            cs->type = yyvsp[-3].seinfo.type;
 #endif  #endif
   #ifdef HAVE_PRIV_SET
                               cs->privs = yyvsp[-2].privinfo.privs;
                               cs->limitprivs = yyvsp[-2].privinfo.limitprivs;
   #endif
                             cs->tags = yyvsp[-1].tag;                              cs->tags = yyvsp[-1].tag;
                             cs->cmnd = yyvsp[0].member;                              cs->cmnd = yyvsp[0].member;
                             cs->prev = cs;                              cs->prev = cs;
Line 1268  case 36: Line 1325  case 36:
                         }                          }
 break;  break;
 case 37:  case 37:
#line 365 "gram.y"#line 388 "gram.y"
 {  {
                             yyval.member = yyvsp[0].member;                              yyval.member = yyvsp[0].member;
                             yyval.member->negated = false;                              yyval.member->negated = false;
                         }                          }
 break;  break;
 case 38:  case 38:
#line 369 "gram.y"#line 392 "gram.y"
 {  {
                             yyval.member = yyvsp[0].member;                              yyval.member = yyvsp[0].member;
                             yyval.member->negated = true;                              yyval.member->negated = true;
                         }                          }
 break;  break;
 case 39:  case 39:
#line 375 "gram.y"#line 398 "gram.y"
 {  {
                             yyval.string = yyvsp[0].string;                              yyval.string = yyvsp[0].string;
                         }                          }
 break;  break;
 case 40:  case 40:
#line 380 "gram.y"#line 403 "gram.y"
 {  {
                             yyval.string = yyvsp[0].string;                              yyval.string = yyvsp[0].string;
                         }                          }
 break;  break;
 case 41:  case 41:
#line 385 "gram.y"#line 408 "gram.y"
 {  {
                             yyval.seinfo.role = NULL;                              yyval.seinfo.role = NULL;
                             yyval.seinfo.type = NULL;                              yyval.seinfo.type = NULL;
                         }                          }
 break;  break;
 case 42:  case 42:
#line 389 "gram.y"#line 412 "gram.y"
 {  {
                             yyval.seinfo.role = yyvsp[0].string;                              yyval.seinfo.role = yyvsp[0].string;
                             yyval.seinfo.type = NULL;                              yyval.seinfo.type = NULL;
                         }                          }
 break;  break;
 case 43:  case 43:
#line 393 "gram.y"#line 416 "gram.y"
 {  {
                             yyval.seinfo.type = yyvsp[0].string;                              yyval.seinfo.type = yyvsp[0].string;
                             yyval.seinfo.role = NULL;                              yyval.seinfo.role = NULL;
                         }                          }
 break;  break;
 case 44:  case 44:
#line 397 "gram.y"#line 420 "gram.y"
 {  {
                             yyval.seinfo.role = yyvsp[-1].string;                              yyval.seinfo.role = yyvsp[-1].string;
                             yyval.seinfo.type = yyvsp[0].string;                              yyval.seinfo.type = yyvsp[0].string;
                         }                          }
 break;  break;
 case 45:  case 45:
#line 401 "gram.y"#line 424 "gram.y"
 {  {
                             yyval.seinfo.type = yyvsp[-1].string;                              yyval.seinfo.type = yyvsp[-1].string;
                             yyval.seinfo.role = yyvsp[0].string;                              yyval.seinfo.role = yyvsp[0].string;
                         }                          }
 break;  break;
 case 46:  case 46:
#line 407 "gram.y"#line 430 "gram.y"
 {  {
                            yyval.runas = NULL;                            yyval.string = yyvsp[0].string;
                         }                          }
 break;  break;
 case 47:  case 47:
#line 410 "gram.y"#line 434 "gram.y"
 {  {
                            yyval.runas = yyvsp[-1].runas;                            yyval.string = yyvsp[0].string;
                         }                          }
 break;  break;
 case 48:  case 48:
#line 415 "gram.y"#line 439 "gram.y"
 {  {
                               yyval.privinfo.privs = NULL;
                               yyval.privinfo.limitprivs = NULL;
                           }
   break;
   case 49:
   #line 443 "gram.y"
   {
                               yyval.privinfo.privs = yyvsp[0].string;
                               yyval.privinfo.limitprivs = NULL;
                           }
   break;
   case 50:
   #line 447 "gram.y"
   {
                               yyval.privinfo.privs = NULL;
                               yyval.privinfo.limitprivs = yyvsp[0].string;
                           }
   break;
   case 51:
   #line 451 "gram.y"
   {
                               yyval.privinfo.privs = yyvsp[-1].string;
                               yyval.privinfo.limitprivs = yyvsp[0].string;
                           }
   break;
   case 52:
   #line 455 "gram.y"
   {
                               yyval.privinfo.limitprivs = yyvsp[-1].string;
                               yyval.privinfo.privs = yyvsp[0].string;
                           }
   break;
   case 53:
   #line 460 "gram.y"
   {
                               yyval.runas = NULL;
                           }
   break;
   case 54:
   #line 463 "gram.y"
   {
                               yyval.runas = yyvsp[-1].runas;
                           }
   break;
   case 55:
   #line 468 "gram.y"
   {
                             yyval.runas = ecalloc(1, sizeof(struct runascontainer));                              yyval.runas = ecalloc(1, sizeof(struct runascontainer));
                               yyval.runas->runasusers = new_member(NULL, MYSELF);
                               /* $$->runasgroups = NULL; */
                           }
   break;
   case 56:
   #line 473 "gram.y"
   {
                               yyval.runas = ecalloc(1, sizeof(struct runascontainer));
                             yyval.runas->runasusers = yyvsp[0].member;                              yyval.runas->runasusers = yyvsp[0].member;
                             /* $$->runasgroups = NULL; */                              /* $$->runasgroups = NULL; */
                         }                          }
 break;  break;
case 49:case 57:
#line 420 "gram.y"#line 478 "gram.y"
 {  {
                             yyval.runas = ecalloc(1, sizeof(struct runascontainer));                              yyval.runas = ecalloc(1, sizeof(struct runascontainer));
                             yyval.runas->runasusers = yyvsp[-2].member;                              yyval.runas->runasusers = yyvsp[-2].member;
                             yyval.runas->runasgroups = yyvsp[0].member;                              yyval.runas->runasgroups = yyvsp[0].member;
                         }                          }
 break;  break;
case 50:case 58:
#line 425 "gram.y"#line 483 "gram.y"
 {  {
                             yyval.runas = ecalloc(1, sizeof(struct runascontainer));                              yyval.runas = ecalloc(1, sizeof(struct runascontainer));
                             /* $$->runasusers = NULL; */                              /* $$->runasusers = NULL; */
                             yyval.runas->runasgroups = yyvsp[0].member;                              yyval.runas->runasgroups = yyvsp[0].member;
                         }                          }
 break;  break;
case 51:case 59:
#line 432 "gram.y"#line 488 "gram.y"
 {  {
                               yyval.runas = ecalloc(1, sizeof(struct runascontainer));
                               yyval.runas->runasusers = new_member(NULL, MYSELF);
                               /* $$->runasgroups = NULL; */
                           }
   break;
   case 60:
   #line 495 "gram.y"
   {
                             yyval.tag.nopasswd = yyval.tag.noexec = yyval.tag.setenv =                              yyval.tag.nopasswd = yyval.tag.noexec = yyval.tag.setenv =
                                 yyval.tag.log_input = yyval.tag.log_output = UNSPEC;                                  yyval.tag.log_input = yyval.tag.log_output = UNSPEC;
                         }                          }
 break;  break;
case 52:case 61:
#line 436 "gram.y"#line 499 "gram.y"
 {  {
                             yyval.tag.nopasswd = true;                              yyval.tag.nopasswd = true;
                         }                          }
 break;  break;
case 53:case 62:
#line 439 "gram.y"#line 502 "gram.y"
 {  {
                             yyval.tag.nopasswd = false;                              yyval.tag.nopasswd = false;
                         }                          }
 break;  break;
case 54:case 63:
#line 442 "gram.y"#line 505 "gram.y"
 {  {
                             yyval.tag.noexec = true;                              yyval.tag.noexec = true;
                         }                          }
 break;  break;
case 55:case 64:
#line 445 "gram.y"#line 508 "gram.y"
 {  {
                             yyval.tag.noexec = false;                              yyval.tag.noexec = false;
                         }                          }
 break;  break;
case 56:case 65:
#line 448 "gram.y"#line 511 "gram.y"
 {  {
                             yyval.tag.setenv = true;                              yyval.tag.setenv = true;
                         }                          }
 break;  break;
case 57:case 66:
#line 451 "gram.y"#line 514 "gram.y"
 {  {
                             yyval.tag.setenv = false;                              yyval.tag.setenv = false;
                         }                          }
 break;  break;
case 58:case 67:
#line 454 "gram.y"#line 517 "gram.y"
 {  {
                             yyval.tag.log_input = true;                              yyval.tag.log_input = true;
                         }                          }
 break;  break;
case 59:case 68:
#line 457 "gram.y"#line 520 "gram.y"
 {  {
                             yyval.tag.log_input = false;                              yyval.tag.log_input = false;
                         }                          }
 break;  break;
case 60:case 69:
#line 460 "gram.y"#line 523 "gram.y"
 {  {
                             yyval.tag.log_output = true;                              yyval.tag.log_output = true;
                         }                          }
 break;  break;
case 61:case 70:
#line 463 "gram.y"#line 526 "gram.y"
 {  {
                             yyval.tag.log_output = false;                              yyval.tag.log_output = false;
                         }                          }
 break;  break;
case 62:case 71:
#line 468 "gram.y"#line 531 "gram.y"
 {  {
                             yyval.member = new_member(NULL, ALL);                              yyval.member = new_member(NULL, ALL);
                         }                          }
 break;  break;
case 63:case 72:
#line 471 "gram.y"#line 534 "gram.y"
 {  {
                             yyval.member = new_member(yyvsp[0].string, ALIAS);                              yyval.member = new_member(yyvsp[0].string, ALIAS);
                         }                          }
 break;  break;
case 64:case 73:
#line 474 "gram.y"#line 537 "gram.y"
 {  {
                             struct sudo_command *c = ecalloc(1, sizeof(*c));                              struct sudo_command *c = ecalloc(1, sizeof(*c));
                             c->cmnd = yyvsp[0].command.cmnd;                              c->cmnd = yyvsp[0].command.cmnd;
Line 1452  case 64: Line 1572  case 64:
                             yyval.member = new_member((char *)c, COMMAND);                              yyval.member = new_member((char *)c, COMMAND);
                         }                          }
 break;  break;
case 67:case 76:
#line 486 "gram.y"#line 549 "gram.y"
 {  {
                             char *s;                              char *s;
                             if ((s = alias_add(yyvsp[-2].string, HOSTALIAS, yyvsp[0].member)) != NULL) {                              if ((s = alias_add(yyvsp[-2].string, HOSTALIAS, yyvsp[0].member)) != NULL) {
Line 1462  case 67: Line 1582  case 67:
                             }                              }
                         }                          }
 break;  break;
case 69:case 78:
#line 496 "gram.y"#line 559 "gram.y"
 {  {
                             list_append(yyvsp[-2].member, yyvsp[0].member);                              list_append(yyvsp[-2].member, yyvsp[0].member);
                             yyval.member = yyvsp[-2].member;                              yyval.member = yyvsp[-2].member;
                         }                          }
 break;  break;
case 72:case 81:
#line 506 "gram.y"#line 569 "gram.y"
 {  {
                             char *s;                              char *s;
                             if ((s = alias_add(yyvsp[-2].string, CMNDALIAS, yyvsp[0].member)) != NULL) {                              if ((s = alias_add(yyvsp[-2].string, CMNDALIAS, yyvsp[0].member)) != NULL) {
Line 1479  case 72: Line 1599  case 72:
                             }                              }
                         }                          }
 break;  break;
case 74:case 83:
#line 516 "gram.y"#line 579 "gram.y"
 {  {
                             list_append(yyvsp[-2].member, yyvsp[0].member);                              list_append(yyvsp[-2].member, yyvsp[0].member);
                             yyval.member = yyvsp[-2].member;                              yyval.member = yyvsp[-2].member;
                         }                          }
 break;  break;
case 77:case 86:
#line 526 "gram.y"#line 589 "gram.y"
 {  {
                             char *s;                              char *s;
                             if ((s = alias_add(yyvsp[-2].string, RUNASALIAS, yyvsp[0].member)) != NULL) {                              if ((s = alias_add(yyvsp[-2].string, RUNASALIAS, yyvsp[0].member)) != NULL) {
Line 1496  case 77: Line 1616  case 77:
                             }                              }
                         }                          }
 break;  break;
case 80:case 89:
#line 539 "gram.y"#line 602 "gram.y"
 {  {
                             char *s;                              char *s;
                             if ((s = alias_add(yyvsp[-2].string, USERALIAS, yyvsp[0].member)) != NULL) {                              if ((s = alias_add(yyvsp[-2].string, USERALIAS, yyvsp[0].member)) != NULL) {
Line 1506  case 80: Line 1626  case 80:
                             }                              }
                         }                          }
 break;  break;
case 82:case 91:
#line 549 "gram.y"#line 612 "gram.y"
 {  {
                             list_append(yyvsp[-2].member, yyvsp[0].member);                              list_append(yyvsp[-2].member, yyvsp[0].member);
                             yyval.member = yyvsp[-2].member;                              yyval.member = yyvsp[-2].member;
                         }                          }
 break;  break;
case 83:case 92:
#line 555 "gram.y"#line 618 "gram.y"
 {  {
                             yyval.member = yyvsp[0].member;                              yyval.member = yyvsp[0].member;
                             yyval.member->negated = false;                              yyval.member->negated = false;
                         }                          }
 break;  break;
case 84:case 93:
#line 559 "gram.y"#line 622 "gram.y"
 {  {
                             yyval.member = yyvsp[0].member;                              yyval.member = yyvsp[0].member;
                             yyval.member->negated = true;                              yyval.member->negated = true;
                         }                          }
 break;  break;
case 85:case 94:
#line 565 "gram.y"#line 628 "gram.y"
 {  {
                             yyval.member = new_member(yyvsp[0].string, ALIAS);                              yyval.member = new_member(yyvsp[0].string, ALIAS);
                         }                          }
 break;  break;
case 86:case 95:
#line 568 "gram.y"#line 631 "gram.y"
 {  {
                             yyval.member = new_member(NULL, ALL);                              yyval.member = new_member(NULL, ALL);
                         }                          }
 break;  break;
case 87:case 96:
#line 571 "gram.y"#line 634 "gram.y"
 {  {
                             yyval.member = new_member(yyvsp[0].string, NETGROUP);                              yyval.member = new_member(yyvsp[0].string, NETGROUP);
                         }                          }
 break;  break;
case 88:case 97:
#line 574 "gram.y"#line 637 "gram.y"
 {  {
                             yyval.member = new_member(yyvsp[0].string, USERGROUP);                              yyval.member = new_member(yyvsp[0].string, USERGROUP);
                         }                          }
 break;  break;
case 89:case 98:
#line 577 "gram.y"#line 640 "gram.y"
 {  {
                             yyval.member = new_member(yyvsp[0].string, WORD);                              yyval.member = new_member(yyvsp[0].string, WORD);
                         }                          }
 break;  break;
case 91:case 100:
#line 583 "gram.y"#line 646 "gram.y"
 {  {
                             list_append(yyvsp[-2].member, yyvsp[0].member);                              list_append(yyvsp[-2].member, yyvsp[0].member);
                             yyval.member = yyvsp[-2].member;                              yyval.member = yyvsp[-2].member;
                         }                          }
 break;  break;
case 92:case 101:
#line 589 "gram.y"#line 652 "gram.y"
 {  {
                             yyval.member = yyvsp[0].member;                              yyval.member = yyvsp[0].member;
                             yyval.member->negated = false;                              yyval.member->negated = false;
                         }                          }
 break;  break;
case 93:case 102:
#line 593 "gram.y"#line 656 "gram.y"
 {  {
                             yyval.member = yyvsp[0].member;                              yyval.member = yyvsp[0].member;
                             yyval.member->negated = true;                              yyval.member->negated = true;
                         }                          }
 break;  break;
case 94:case 103:
#line 599 "gram.y"#line 662 "gram.y"
 {  {
                             yyval.member = new_member(yyvsp[0].string, ALIAS);                              yyval.member = new_member(yyvsp[0].string, ALIAS);
                         }                          }
 break;  break;
case 95:case 104:
#line 602 "gram.y"#line 665 "gram.y"
 {  {
                             yyval.member = new_member(NULL, ALL);                              yyval.member = new_member(NULL, ALL);
                         }                          }
 break;  break;
case 96:case 105:
#line 605 "gram.y"#line 668 "gram.y"
 {  {
                             yyval.member = new_member(yyvsp[0].string, WORD);                              yyval.member = new_member(yyvsp[0].string, WORD);
                         }                          }
 break;  break;
#line 1547 "gram.c"#line 1667 "gram.c"
     }      }
     yyssp -= yym;      yyssp -= yym;
     yystate = *yyssp;      yystate = *yyssp;

Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>