X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=gram.c;h=d2e8b46ae895c4bd0f8204fa8afb9064aeeeb4b2;hb=6ba437d0a1f717a93efa4e3a42fd9ddd8144a286;hp=ed991a7d1d9f579b3f0d9dd31bbc0ee6cc9774a1;hpb=06a67e2a5850f36c627b46f330c988e031536ab3;p=debian%2Fsudo diff --git a/gram.c b/gram.c index ed991a7..d2e8b46 100644 --- a/gram.c +++ b/gram.c @@ -1,11 +1,3 @@ -#ifndef lint -/*static char yysccsid[] = "from: @(#)yaccpar 1.9 (Berkeley) 02/21/93";*/ -static char yyrcsid[] -#if __GNUC__ >= 2 - __attribute__ ((unused)) -#endif /* __GNUC__ >= 2 */ - = "$OpenBSD: skeleton.c,v 1.29 2008/07/08 15:06:50 otto Exp $"; -#endif #include #include #define YYBYACC 1 @@ -19,7 +11,7 @@ static char yyrcsid[] #define YYPREFIX "yy" #line 2 "gram.y" /* - * Copyright (c) 1996, 1998-2005, 2007-2008 + * Copyright (c) 1996, 1998-2005, 2007-2010 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -56,11 +48,10 @@ static char yyrcsid[] #endif /* STDC_HEADERS */ #ifdef HAVE_STRING_H # include -#else -# ifdef HAVE_STRINGS_H -# include -# endif #endif /* HAVE_STRING_H */ +#ifdef HAVE_STRINGS_H +# include +#endif /* HAVE_STRINGS_H */ #ifdef HAVE_UNISTD_H # include #endif /* HAVE_UNISTD_H */ @@ -72,10 +63,6 @@ static char yyrcsid[] #include "sudo.h" #include "parse.h" -#ifndef lint -__unused static const char rcsid[] = "$Sudo: gram.c,v 1.34 2008/11/09 14:15:36 millert Exp $"; -#endif /* lint */ - /* * We must define SIZE_MAX for yacc's skeleton.c. * If there is no SIZE_MAX or SIZE_T_MAX we have to assume that size_t @@ -131,7 +118,7 @@ yyerror(s) } parse_error = TRUE; } -#line 117 "gram.y" +#line 112 "gram.y" #ifndef YYSTYPE_DEFINED #define YYSTYPE_DEFINED typedef union { @@ -147,7 +134,7 @@ typedef union { int tok; } YYSTYPE; #endif /* YYSTYPE_DEFINED */ -#line 151 "y.tab.c" +#line 138 "y.tab.c" #define COMMAND 257 #define ALIAS 258 #define DEFVAR 259 @@ -166,15 +153,19 @@ typedef union { #define EXEC 272 #define SETENV 273 #define NOSETENV 274 -#define ALL 275 -#define COMMENT 276 -#define HOSTALIAS 277 -#define CMNDALIAS 278 -#define USERALIAS 279 -#define RUNASALIAS 280 -#define ERROR 281 -#define TYPE 282 -#define ROLE 283 +#define LOG_INPUT 275 +#define NOLOG_INPUT 276 +#define LOG_OUTPUT 277 +#define NOLOG_OUTPUT 278 +#define ALL 279 +#define COMMENT 280 +#define HOSTALIAS 281 +#define CMNDALIAS 282 +#define USERALIAS 283 +#define RUNASALIAS 284 +#define ERROR 285 +#define TYPE 286 +#define ROLE 287 #define YYERRCODE 256 #if defined(__cplusplus) || defined(__STDC__) const short yylhs[] = @@ -187,11 +178,11 @@ short yylhs[] = 3, 3, 3, 20, 20, 19, 10, 10, 8, 8, 8, 8, 8, 2, 2, 1, 6, 6, 23, 24, 22, 22, 22, 22, 22, 17, 17, 18, 18, 18, - 21, 21, 21, 21, 21, 21, 21, 5, 5, 5, - 28, 28, 31, 9, 9, 29, 29, 32, 7, 7, - 30, 30, 33, 27, 27, 34, 13, 13, 11, 11, - 12, 12, 12, 12, 12, 16, 16, 14, 14, 15, - 15, 15, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 5, 5, 5, 28, 28, 31, 9, 9, 29, + 29, 32, 7, 7, 30, 30, 33, 27, 27, 34, + 13, 13, 11, 11, 12, 12, 12, 12, 12, 16, + 16, 14, 14, 15, 15, 15, }; #if defined(__cplusplus) || defined(__STDC__) const short yylen[] = @@ -204,11 +195,11 @@ short yylen[] = 3, 3, 3, 1, 3, 3, 1, 2, 1, 1, 1, 1, 1, 1, 3, 4, 1, 2, 3, 3, 0, 1, 1, 2, 2, 0, 3, 1, 3, 2, - 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, - 1, 3, 3, 1, 3, 1, 3, 3, 1, 3, - 1, 3, 3, 1, 3, 3, 1, 3, 1, 2, - 1, 1, 1, 1, 1, 1, 3, 1, 2, 1, - 1, 1, + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 1, 1, 1, 1, 3, 3, 1, 3, 1, + 3, 3, 1, 3, 1, 3, 3, 1, 3, 3, + 1, 3, 1, 2, 1, 1, 1, 1, 1, 1, + 3, 1, 2, 1, 1, 1, }; #if defined(__cplusplus) || defined(__STDC__) const short yydefred[] = @@ -216,21 +207,21 @@ const short yydefred[] = short yydefred[] = #endif { 0, - 0, 81, 83, 84, 85, 0, 0, 0, 0, 0, - 82, 5, 0, 0, 0, 0, 0, 0, 77, 79, + 0, 85, 87, 88, 89, 0, 0, 0, 0, 0, + 86, 5, 0, 0, 0, 0, 0, 0, 81, 83, 0, 0, 3, 6, 0, 0, 17, 0, 29, 32, - 31, 33, 30, 0, 27, 0, 64, 0, 0, 60, - 59, 58, 0, 37, 69, 0, 0, 0, 61, 0, - 0, 66, 0, 0, 74, 0, 0, 71, 80, 0, + 31, 33, 30, 0, 27, 0, 68, 0, 0, 64, + 63, 62, 0, 37, 73, 0, 0, 0, 65, 0, + 0, 70, 0, 0, 78, 0, 0, 75, 84, 0, 0, 24, 0, 4, 0, 0, 0, 20, 0, 28, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 78, 0, 0, 21, 22, - 23, 18, 65, 70, 0, 62, 0, 67, 0, 75, - 0, 72, 0, 34, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 51, 0, 0, 90, 92, 91, 0, - 86, 88, 0, 0, 47, 35, 0, 0, 0, 44, - 45, 89, 0, 0, 40, 39, 52, 53, 54, 55, - 56, 57, 36, 87, + 0, 0, 0, 0, 0, 82, 0, 0, 21, 22, + 23, 18, 69, 74, 0, 66, 0, 71, 0, 79, + 0, 76, 0, 34, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 51, 0, 0, 94, 96, 95, 0, + 90, 92, 0, 0, 47, 35, 0, 0, 0, 44, + 45, 93, 0, 0, 40, 39, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 36, 91, }; #if defined(__cplusplus) || defined(__STDC__) const short yydgoto[] = @@ -248,140 +239,149 @@ const short yysindex[] = #else short yysindex[] = #endif - { 405, - -266, 0, 0, 0, 0, -9, 463, 510, 510, -2, - 0, 0, -243, -218, -215, -211, -225, 0, 0, 0, - -28, 405, 0, 0, -36, -210, 0, 4, 0, 0, - 0, 0, 0, -231, 0, -33, 0, -25, -25, 0, - 0, 0, -240, 0, 0, -21, -6, -1, 0, 2, - 6, 0, 7, 8, 0, 9, 11, 0, 0, 510, - -22, 0, 13, 0, -203, -201, -198, 0, -9, 0, - 463, 4, 4, 4, 0, -2, 4, 463, -243, -2, - -218, 510, -215, 510, -211, 0, 27, 463, 0, 0, - 0, 0, 0, 0, 28, 0, 30, 0, 31, 0, - 31, 0, 141, 0, 32, -262, 0, -27, -16, 36, - 27, 18, 19, 0, -200, -202, 0, 0, 0, -217, - 0, 0, 39, -27, 0, 0, -177, -175, 250, 0, - 0, 0, -27, 39, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,}; + { 475, + -270, 0, 0, 0, 0, -29, 567, 594, 594, -2, + 0, 0, -240, -222, -216, -212, -241, 0, 0, 0, + -25, 475, 0, 0, -10, -207, 0, 9, 0, 0, + 0, 0, 0, -235, 0, -33, 0, -31, -31, 0, + 0, 0, -242, 0, 0, -30, -7, 3, 0, -6, + 4, 0, -5, 6, 0, -1, 8, 0, 0, 594, + -20, 0, 10, 0, -205, -196, -194, 0, -29, 0, + 567, 9, 9, 9, 0, -2, 9, 567, -240, -2, + -222, 594, -216, 594, -212, 0, 31, 567, 0, 0, + 0, 0, 0, 0, 26, 0, 28, 0, 29, 0, + 29, 0, 541, 0, 32, -247, 0, 86, -15, 33, + 31, 14, 16, 0, -208, -204, 0, 0, 0, -231, + 0, 0, 38, 86, 0, 0, -179, -178, 491, 0, + 0, 0, 86, 38, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,}; #if defined(__cplusplus) || defined(__STDC__) const short yyrindex[] = #else short yyrindex[] = #endif - { 90, + { 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 91, 0, 0, 1, 0, 0, 156, 0, 0, + 0, 90, 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, 181, 0, 0, - 206, 0, 0, 237, 0, 0, 274, 0, 0, 0, - 0, 0, 300, 0, 0, 0, 0, 0, 0, 0, - 0, 326, 352, 378, 0, 0, 430, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -29, 0, 0, 0, - 0, 0, 0, 0, 26, 0, 52, 0, 78, 0, - 104, 0, 0, 0, 130, 442, 0, 0, 51, 0, - -29, 0, 0, 0, 461, 485, 0, 0, 0, 0, - 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,}; + 0, 0, 0, 0, 0, 0, 0, 207, 0, 0, + 237, 0, 0, 271, 0, 0, 300, 0, 0, 0, + 0, 0, 329, 0, 0, 0, 0, 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, 30, 0, 59, 0, 89, 0, + 118, 0, 0, 0, 148, 514, 0, 0, 45, 0, + -26, 0, 0, 0, 537, 565, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,}; #if defined(__cplusplus) || defined(__STDC__) const short yygindex[] = #else short yygindex[] = #endif { 0, - -18, 0, 29, 15, 56, -73, 16, 63, -5, 34, - 40, 84, 5, -31, -17, -15, 0, 0, 24, 0, - 0, 0, -10, -8, 0, 92, 0, 0, 0, 0, - 37, 38, 33, 41, + -17, 0, 27, 11, 54, -64, 15, 64, 2, 34, + 39, 84, -3, -27, -18, -21, 0, 0, 19, 0, + 0, 0, -12, -4, 0, 88, 0, 0, 0, 0, + 35, 40, 23, 37, }; -#define YYTABLESIZE 785 +#define YYTABLESIZE 873 #if defined(__cplusplus) || defined(__STDC__) const short yytable[] = #else short yytable[] = #endif { 26, - 19, 36, 94, 46, 34, 120, 66, 26, 67, 24, - 71, 26, 38, 39, 47, 60, 40, 41, 60, 112, - 113, 71, 76, 26, 65, 63, 29, 60, 30, 31, - 43, 32, 2, 19, 42, 3, 4, 5, 87, 50, - 117, 124, 53, 33, 19, 118, 56, 69, 68, 11, - 72, 68, 73, 74, 78, 143, 79, 119, 63, 89, - 77, 90, 80, 81, 91, 83, 103, 82, 85, 84, - 88, 71, 95, 76, 60, 111, 125, 76, 127, 128, - 113, 112, 133, 63, 68, 135, 99, 136, 101, 1, - 2, 48, 126, 50, 49, 97, 70, 92, 75, 86, - 59, 144, 132, 73, 93, 131, 130, 109, 134, 68, - 76, 107, 0, 64, 0, 96, 0, 102, 98, 0, - 0, 0, 0, 100, 0, 0, 0, 0, 0, 26, - 0, 0, 0, 0, 0, 76, 73, 0, 0, 0, + 19, 26, 26, 26, 38, 39, 46, 34, 36, 24, + 71, 94, 60, 76, 40, 41, 2, 47, 60, 3, + 4, 5, 29, 71, 30, 31, 117, 32, 60, 67, + 43, 118, 66, 19, 67, 50, 42, 11, 112, 113, + 87, 53, 124, 33, 19, 56, 72, 119, 73, 74, + 65, 68, 69, 78, 80, 82, 77, 89, 72, 84, + 79, 81, 67, 83, 147, 85, 90, 88, 91, 71, + 103, 76, 60, 125, 127, 111, 128, 112, 99, 95, + 101, 133, 113, 135, 136, 48, 1, 67, 80, 2, + 50, 72, 49, 126, 97, 92, 75, 70, 86, 109, + 59, 132, 134, 131, 93, 148, 107, 102, 0, 64, + 130, 0, 0, 96, 0, 0, 72, 77, 120, 100, + 98, 80, 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, + 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, 12, 0, 0, 0, 0, - 0, 73, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, - 9, 0, 0, 0, 0, 0, 0, 26, 12, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, - 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, - 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 25, 0, 46, 46, 29, - 117, 30, 31, 25, 32, 118, 8, 25, 10, 46, - 46, 46, 46, 46, 46, 46, 33, 119, 0, 25, - 0, 0, 46, 46, 40, 41, 19, 0, 19, 0, - 0, 19, 19, 19, 19, 19, 19, 19, 19, 8, - 0, 0, 42, 11, 0, 19, 19, 19, 19, 19, - 19, 63, 43, 63, 0, 0, 63, 63, 63, 63, - 63, 63, 63, 63, 0, 0, 0, 0, 0, 7, - 63, 63, 63, 63, 63, 63, 11, 68, 0, 68, - 0, 0, 68, 68, 68, 68, 68, 68, 68, 68, - 0, 0, 0, 0, 0, 15, 68, 68, 68, 68, - 68, 68, 7, 76, 0, 76, 0, 0, 76, 76, - 76, 76, 76, 76, 76, 76, 0, 0, 0, 0, - 0, 13, 76, 76, 76, 76, 76, 76, 15, 73, - 0, 73, 0, 0, 73, 73, 73, 73, 73, 73, - 73, 73, 0, 0, 0, 0, 0, 14, 73, 73, - 73, 73, 73, 73, 13, 26, 0, 26, 0, 0, - 26, 26, 26, 26, 26, 26, 26, 26, 2, 0, - 0, 3, 4, 5, 26, 26, 26, 26, 26, 26, - 14, 12, 0, 12, 0, 11, 12, 12, 12, 12, - 12, 12, 12, 12, 0, 0, 0, 0, 0, 16, - 12, 12, 12, 12, 12, 12, 9, 17, 9, 0, - 0, 9, 9, 9, 9, 9, 9, 9, 9, 0, + 0, 0, 0, 0, 0, 77, 12, 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, 26, 9, 0, 0, 12, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 25, 0, 25, 25, 25, + 46, 46, 29, 0, 30, 31, 10, 32, 0, 9, + 0, 0, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 33, 40, 41, 19, 0, 19, 46, + 46, 19, 19, 19, 19, 19, 19, 19, 19, 10, + 8, 0, 0, 0, 0, 0, 42, 0, 0, 19, + 19, 19, 19, 19, 19, 67, 0, 67, 0, 0, + 67, 67, 67, 67, 67, 67, 67, 67, 0, 11, + 0, 0, 0, 8, 0, 0, 0, 0, 67, 67, + 67, 67, 67, 67, 72, 0, 72, 0, 0, 72, + 72, 72, 72, 72, 72, 72, 72, 0, 7, 0, + 0, 0, 11, 0, 0, 0, 0, 72, 72, 72, + 72, 72, 72, 117, 80, 0, 80, 0, 118, 80, + 80, 80, 80, 80, 80, 80, 80, 15, 0, 0, + 0, 7, 0, 0, 119, 0, 0, 80, 80, 80, + 80, 80, 80, 77, 0, 77, 0, 0, 77, 77, + 77, 77, 77, 77, 77, 77, 13, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 77, 77, 77, 77, + 77, 77, 0, 26, 0, 26, 0, 0, 26, 26, + 26, 26, 26, 26, 26, 26, 14, 0, 0, 13, + 0, 0, 0, 0, 0, 0, 26, 26, 26, 26, + 26, 26, 12, 0, 12, 0, 0, 12, 12, 12, + 12, 12, 12, 12, 12, 16, 0, 0, 0, 14, + 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, + 12, 0, 9, 0, 9, 0, 0, 9, 9, 9, + 9, 9, 9, 9, 9, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, - 9, 10, 16, 10, 0, 0, 10, 10, 10, 10, - 10, 10, 10, 10, 41, 0, 0, 0, 0, 0, - 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, - 0, 0, 8, 42, 8, 34, 0, 8, 8, 8, - 8, 8, 8, 8, 8, 0, 40, 41, 0, 0, - 0, 8, 8, 8, 8, 8, 8, 43, 137, 138, - 139, 140, 141, 142, 42, 0, 0, 0, 0, 11, - 0, 11, 0, 0, 11, 11, 11, 11, 11, 11, - 11, 11, 17, 0, 0, 0, 0, 0, 11, 11, - 11, 11, 11, 11, 0, 7, 0, 7, 0, 0, - 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, - 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, - 0, 15, 0, 15, 0, 0, 15, 15, 15, 15, - 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, - 15, 15, 15, 15, 15, 15, 0, 13, 0, 13, - 0, 0, 13, 13, 13, 13, 13, 13, 13, 13, - 0, 0, 0, 0, 0, 0, 13, 13, 13, 13, - 13, 13, 0, 14, 0, 14, 0, 0, 14, 14, - 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, - 0, 0, 14, 14, 14, 14, 14, 14, 0, 0, - 1, 0, 2, 0, 0, 3, 4, 5, 6, 7, - 8, 9, 10, 0, 0, 0, 0, 0, 0, 11, - 12, 13, 14, 15, 16, 16, 0, 16, 0, 0, - 16, 16, 16, 16, 16, 16, 16, 16, 41, 41, + 9, 0, 10, 0, 10, 0, 0, 10, 10, 10, + 10, 10, 10, 10, 10, 0, 0, 17, 0, 0, + 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, + 10, 0, 0, 43, 0, 0, 8, 0, 8, 0, + 0, 8, 8, 8, 8, 8, 8, 8, 8, 0, + 0, 0, 0, 0, 0, 0, 41, 0, 0, 8, + 8, 8, 8, 8, 8, 11, 0, 11, 0, 0, + 11, 11, 11, 11, 11, 11, 11, 11, 0, 42, + 0, 0, 0, 17, 0, 0, 0, 0, 11, 11, + 11, 11, 11, 11, 7, 0, 7, 0, 0, 7, + 7, 7, 7, 7, 7, 7, 7, 43, 108, 34, + 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, + 7, 7, 7, 15, 0, 15, 0, 0, 15, 15, + 15, 15, 15, 15, 15, 15, 17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, + 15, 15, 13, 0, 13, 0, 0, 13, 13, 13, + 13, 13, 13, 13, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 13, 13, 13, 13, 13, + 13, 0, 14, 0, 14, 0, 0, 14, 14, 14, + 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, + 14, 16, 0, 16, 0, 0, 16, 16, 16, 16, + 16, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 16, 16, 16, 16, - 41, 41, 41, 41, 41, 41, 41, 42, 42, 0, - 29, 0, 30, 31, 0, 32, 0, 0, 0, 42, - 42, 42, 42, 42, 42, 42, 0, 33, 0, 0, - 0, 43, 43, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 2, 0, 0, 3, 4, 5, 6, 7, + 8, 9, 10, 0, 0, 0, 0, 40, 41, 0, + 0, 0, 0, 11, 12, 13, 14, 15, 16, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 42, + 41, 41, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 42, 42, 0, 0, 0, 2, 0, + 0, 3, 4, 5, 0, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 0, 0, 0, 11, + 0, 43, 43, 0, 29, 0, 30, 31, 0, 32, 0, 0, 0, 43, 43, 43, 43, 43, 43, 43, - 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, - 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 11, + 43, 43, 43, 43, 0, 33, 0, 0, 0, 0, + 0, 2, 0, 0, 3, 4, 5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 11, }; #if defined(__cplusplus) || defined(__STDC__) const short yycheck[] = @@ -389,91 +389,100 @@ const short yycheck[] = short yycheck[] = #endif { 33, - 0, 7, 76, 33, 33, 33, 43, 33, 45, 276, - 44, 33, 8, 9, 258, 44, 257, 258, 44, 282, - 283, 44, 44, 33, 61, 0, 258, 44, 260, 261, - 33, 263, 258, 33, 275, 261, 262, 263, 61, 258, - 258, 58, 258, 275, 44, 263, 258, 44, 259, 275, - 36, 0, 38, 39, 61, 129, 58, 275, 33, 263, - 46, 263, 61, 58, 263, 58, 40, 61, 58, 61, - 58, 44, 78, 44, 44, 44, 41, 0, 61, 61, - 283, 282, 44, 58, 33, 263, 82, 263, 84, 0, - 0, 41, 111, 41, 41, 80, 34, 69, 43, 60, - 17, 133, 120, 0, 71, 116, 115, 103, 124, 58, - 33, 88, -1, 22, -1, 79, -1, 85, 81, -1, - -1, -1, -1, 83, -1, -1, -1, -1, -1, 0, - -1, -1, -1, -1, -1, 58, 33, -1, -1, -1, + 0, 33, 33, 33, 8, 9, 33, 33, 7, 280, + 44, 76, 44, 44, 257, 258, 258, 258, 44, 261, + 262, 263, 258, 44, 260, 261, 258, 263, 44, 0, + 33, 263, 43, 33, 45, 258, 279, 279, 286, 287, + 61, 258, 58, 279, 44, 258, 36, 279, 38, 39, + 61, 259, 44, 61, 61, 61, 46, 263, 0, 61, + 58, 58, 33, 58, 129, 58, 263, 58, 263, 44, + 40, 44, 44, 41, 61, 44, 61, 286, 82, 78, + 84, 44, 287, 263, 263, 41, 0, 58, 0, 0, + 41, 33, 41, 111, 80, 69, 43, 34, 60, 103, + 17, 120, 124, 116, 71, 133, 88, 85, -1, 22, + 115, -1, -1, 79, -1, -1, 58, 0, 33, 83, + 81, 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, 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, 58, 0, -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, 0, -1, -1, -1, -1, - -1, 58, 33, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, - 0, -1, -1, -1, -1, -1, -1, 58, 33, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, - -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, - -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 259, -1, 257, 258, 258, - 258, 260, 261, 259, 263, 263, 0, 259, 33, 269, - 270, 271, 272, 273, 274, 275, 275, 275, -1, 259, - -1, -1, 282, 283, 257, 258, 256, -1, 258, -1, - -1, 261, 262, 263, 264, 265, 266, 267, 268, 33, - -1, -1, 275, 0, -1, 275, 276, 277, 278, 279, - 280, 256, 33, 258, -1, -1, 261, 262, 263, 264, - 265, 266, 267, 268, -1, -1, -1, -1, -1, 0, - 275, 276, 277, 278, 279, 280, 33, 256, -1, 258, - -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, - -1, -1, -1, -1, -1, 0, 275, 276, 277, 278, - 279, 280, 33, 256, -1, 258, -1, -1, 261, 262, - 263, 264, 265, 266, 267, 268, -1, -1, -1, -1, - -1, 0, 275, 276, 277, 278, 279, 280, 33, 256, - -1, 258, -1, -1, 261, 262, 263, 264, 265, 266, - 267, 268, -1, -1, -1, -1, -1, 0, 275, 276, - 277, 278, 279, 280, 33, 256, -1, 258, -1, -1, - 261, 262, 263, 264, 265, 266, 267, 268, 258, -1, - -1, 261, 262, 263, 275, 276, 277, 278, 279, 280, - 33, 256, -1, 258, -1, 275, 261, 262, 263, 264, - 265, 266, 267, 268, -1, -1, -1, -1, -1, 0, - 275, 276, 277, 278, 279, 280, 256, 33, 258, -1, + -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, 259, -1, 259, 259, 259, + 257, 258, 258, -1, 260, 261, 0, 263, -1, 33, + -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 279, 257, 258, 256, -1, 258, 286, + 287, 261, 262, 263, 264, 265, 266, 267, 268, 33, + 0, -1, -1, -1, -1, -1, 279, -1, -1, 279, + 280, 281, 282, 283, 284, 256, -1, 258, -1, -1, + 261, 262, 263, 264, 265, 266, 267, 268, -1, 0, + -1, -1, -1, 33, -1, -1, -1, -1, 279, 280, + 281, 282, 283, 284, 256, -1, 258, -1, -1, 261, + 262, 263, 264, 265, 266, 267, 268, -1, 0, -1, + -1, -1, 33, -1, -1, -1, -1, 279, 280, 281, + 282, 283, 284, 258, 256, -1, 258, -1, 263, 261, + 262, 263, 264, 265, 266, 267, 268, 0, -1, -1, + -1, 33, -1, -1, 279, -1, -1, 279, 280, 281, + 282, 283, 284, 256, -1, 258, -1, -1, 261, 262, + 263, 264, 265, 266, 267, 268, 0, -1, -1, -1, + 33, -1, -1, -1, -1, -1, 279, 280, 281, 282, + 283, 284, -1, 256, -1, 258, -1, -1, 261, 262, + 263, 264, 265, 266, 267, 268, 0, -1, -1, 33, + -1, -1, -1, -1, -1, -1, 279, 280, 281, 282, + 283, 284, 256, -1, 258, -1, -1, 261, 262, 263, + 264, 265, 266, 267, 268, 0, -1, -1, -1, 33, + -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, + 284, -1, 256, -1, 258, -1, -1, 261, 262, 263, + 264, 265, 266, 267, 268, -1, -1, -1, 33, -1, + -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, + 284, -1, 256, -1, 258, -1, -1, 261, 262, 263, + 264, 265, 266, 267, 268, -1, -1, 33, -1, -1, + -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, + 284, -1, -1, 33, -1, -1, 256, -1, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, -1, - -1, -1, -1, -1, -1, 275, 276, 277, 278, 279, - 280, 256, 33, 258, -1, -1, 261, 262, 263, 264, - 265, 266, 267, 268, 33, -1, -1, -1, -1, -1, - 275, 276, 277, 278, 279, 280, -1, -1, -1, -1, - -1, -1, 256, 33, 258, 33, -1, 261, 262, 263, - 264, 265, 266, 267, 268, -1, 257, 258, -1, -1, - -1, 275, 276, 277, 278, 279, 280, 33, 269, 270, - 271, 272, 273, 274, 275, -1, -1, -1, -1, 256, - -1, 258, -1, -1, 261, 262, 263, 264, 265, 266, - 267, 268, 33, -1, -1, -1, -1, -1, 275, 276, - 277, 278, 279, 280, -1, 256, -1, 258, -1, -1, - 261, 262, 263, 264, 265, 266, 267, 268, -1, -1, - -1, -1, -1, -1, 275, 276, 277, 278, 279, 280, - -1, 256, -1, 258, -1, -1, 261, 262, 263, 264, + -1, -1, -1, -1, -1, -1, 33, -1, -1, 279, + 280, 281, 282, 283, 284, 256, -1, 258, -1, -1, + 261, 262, 263, 264, 265, 266, 267, 268, -1, 33, + -1, -1, -1, 33, -1, -1, -1, -1, 279, 280, + 281, 282, 283, 284, 256, -1, 258, -1, -1, 261, + 262, 263, 264, 265, 266, 267, 268, 33, 58, 33, + -1, -1, -1, -1, -1, -1, -1, 279, 280, 281, + 282, 283, 284, 256, -1, 258, -1, -1, 261, 262, + 263, 264, 265, 266, 267, 268, 33, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 279, 280, 281, 282, + 283, 284, 256, -1, 258, -1, -1, 261, 262, 263, + 264, 265, 266, 267, 268, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, + 284, -1, 256, -1, 258, -1, -1, 261, 262, 263, + 264, 265, 266, 267, 268, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, + 284, 256, -1, 258, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, -1, -1, -1, -1, -1, -1, - 275, 276, 277, 278, 279, 280, -1, 256, -1, 258, - -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, - -1, -1, -1, -1, -1, -1, 275, 276, 277, 278, - 279, 280, -1, 256, -1, 258, -1, -1, 261, 262, - 263, 264, 265, 266, 267, 268, -1, -1, -1, -1, - -1, -1, 275, 276, 277, 278, 279, 280, -1, -1, + -1, -1, -1, -1, 279, 280, 281, 282, 283, 284, 256, -1, 258, -1, -1, 261, 262, 263, 264, 265, - 266, 267, 268, -1, -1, -1, -1, -1, -1, 275, - 276, 277, 278, 279, 280, 256, -1, 258, -1, -1, - 261, 262, 263, 264, 265, 266, 267, 268, 257, 258, - -1, -1, -1, -1, 275, 276, 277, 278, 279, 280, - 269, 270, 271, 272, 273, 274, 275, 257, 258, -1, - 258, -1, 260, 261, -1, 263, -1, -1, -1, 269, - 270, 271, 272, 273, 274, 275, -1, 275, -1, -1, - -1, 257, 258, -1, -1, -1, -1, -1, -1, -1, + 266, 267, 268, -1, -1, -1, -1, 257, 258, -1, + -1, -1, -1, 279, 280, 281, 282, 283, 284, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 257, 258, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 257, 258, -1, -1, -1, 258, -1, + -1, 261, 262, 263, -1, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, -1, -1, -1, 279, + -1, 257, 258, -1, 258, -1, 260, 261, -1, 263, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, - -1, -1, -1, -1, -1, -1, -1, 258, -1, -1, - 261, 262, 263, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 275, + 276, 277, 278, 279, -1, 279, -1, -1, -1, -1, + -1, 258, -1, -1, 261, 262, 263, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 279, }; #define YYFINAL 18 #ifndef YYDEBUG #define YYDEBUG 0 #endif -#define YYMAXTOKEN 283 +#define YYMAXTOKEN 287 #if YYDEBUG #if defined(__cplusplus) || defined(__STDC__) const char * const yyname[] = @@ -490,8 +499,9 @@ char *yyname[] = 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, "COMMAND","ALIAS","DEFVAR","NTWKADDR","NETGROUP","USERGROUP","WORD","DEFAULTS", "DEFAULTS_HOST","DEFAULTS_USER","DEFAULTS_RUNAS","DEFAULTS_CMND","NOPASSWD", -"PASSWD","NOEXEC","EXEC","SETENV","NOSETENV","ALL","COMMENT","HOSTALIAS", -"CMNDALIAS","USERALIAS","RUNASALIAS","ERROR","TYPE","ROLE", +"PASSWD","NOEXEC","EXEC","SETENV","NOSETENV","LOG_INPUT","NOLOG_INPUT", +"LOG_OUTPUT","NOLOG_OUTPUT","ALL","COMMENT","HOSTALIAS","CMNDALIAS","USERALIAS", +"RUNASALIAS","ERROR","TYPE","ROLE", }; #if defined(__cplusplus) || defined(__STDC__) const char * const yyrule[] = @@ -556,6 +566,10 @@ char *yyrule[] = "cmndtag : cmndtag EXEC", "cmndtag : cmndtag SETENV", "cmndtag : cmndtag NOSETENV", +"cmndtag : cmndtag LOG_INPUT", +"cmndtag : cmndtag NOLOG_INPUT", +"cmndtag : cmndtag LOG_OUTPUT", +"cmndtag : cmndtag NOLOG_OUTPUT", "cmnd : ALL", "cmnd : ALIAS", "cmnd : COMMAND", @@ -618,7 +632,7 @@ short *yyss; short *yysslim; YYSTYPE *yyvs; int yystacksize; -#line 590 "gram.y" +#line 606 "gram.y" static struct defaults * new_default(var, val, op) char *var; @@ -798,15 +812,18 @@ init_parser(path, quiet) init_aliases(); + init_lexer(); + efree(sudoers); sudoers = path ? estrdup(path) : NULL; parse_error = FALSE; errorlineno = -1; + errorfile = NULL; sudolineno = 1; verbose = !quiet; } -#line 758 "y.tab.c" +#line 775 "y.tab.c" /* allocate initial stack or double stack size, up to YYMAXDEPTH */ #if defined(__cplusplus) || defined(__STDC__) static int yygrowstack(void) @@ -1012,127 +1029,127 @@ yyreduce: switch (yyn) { case 1: -#line 188 "gram.y" +#line 187 "gram.y" { ; } break; case 5: -#line 196 "gram.y" +#line 195 "gram.y" { ; } break; case 6: -#line 199 "gram.y" +#line 198 "gram.y" { yyerrok; } break; case 7: -#line 202 "gram.y" +#line 201 "gram.y" { add_userspec(yyvsp[-1].member, yyvsp[0].privilege); } break; case 8: -#line 205 "gram.y" +#line 204 "gram.y" { ; } break; case 9: -#line 208 "gram.y" +#line 207 "gram.y" { ; } break; case 10: -#line 211 "gram.y" +#line 210 "gram.y" { ; } break; case 11: -#line 214 "gram.y" +#line 213 "gram.y" { ; } break; case 12: -#line 217 "gram.y" +#line 216 "gram.y" { add_defaults(DEFAULTS, NULL, yyvsp[0].defaults); } break; case 13: -#line 220 "gram.y" +#line 219 "gram.y" { add_defaults(DEFAULTS_USER, yyvsp[-1].member, yyvsp[0].defaults); } break; case 14: -#line 223 "gram.y" +#line 222 "gram.y" { add_defaults(DEFAULTS_RUNAS, yyvsp[-1].member, yyvsp[0].defaults); } break; case 15: -#line 226 "gram.y" +#line 225 "gram.y" { add_defaults(DEFAULTS_HOST, yyvsp[-1].member, yyvsp[0].defaults); } break; case 16: -#line 229 "gram.y" +#line 228 "gram.y" { add_defaults(DEFAULTS_CMND, yyvsp[-1].member, yyvsp[0].defaults); } break; case 18: -#line 235 "gram.y" +#line 234 "gram.y" { list_append(yyvsp[-2].defaults, yyvsp[0].defaults); yyval.defaults = yyvsp[-2].defaults; } break; case 19: -#line 241 "gram.y" +#line 240 "gram.y" { yyval.defaults = new_default(yyvsp[0].string, NULL, TRUE); } break; case 20: -#line 244 "gram.y" +#line 243 "gram.y" { yyval.defaults = new_default(yyvsp[0].string, NULL, FALSE); } break; case 21: -#line 247 "gram.y" +#line 246 "gram.y" { yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, TRUE); } break; case 22: -#line 250 "gram.y" +#line 249 "gram.y" { yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '+'); } break; case 23: -#line 253 "gram.y" +#line 252 "gram.y" { yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '-'); } break; case 25: -#line 259 "gram.y" +#line 258 "gram.y" { list_append(yyvsp[-2].privilege, yyvsp[0].privilege); yyval.privilege = yyvsp[-2].privilege; } break; case 26: -#line 265 "gram.y" +#line 264 "gram.y" { struct privilege *p = emalloc(sizeof(*p)); list2tq(&p->hostlist, yyvsp[-2].member); @@ -1143,51 +1160,51 @@ case 26: } break; case 27: -#line 275 "gram.y" +#line 274 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = FALSE; } break; case 28: -#line 279 "gram.y" +#line 278 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = TRUE; } break; case 29: -#line 285 "gram.y" +#line 284 "gram.y" { yyval.member = new_member(yyvsp[0].string, ALIAS); } break; case 30: -#line 288 "gram.y" +#line 287 "gram.y" { yyval.member = new_member(NULL, ALL); } break; case 31: -#line 291 "gram.y" +#line 290 "gram.y" { yyval.member = new_member(yyvsp[0].string, NETGROUP); } break; case 32: -#line 294 "gram.y" +#line 293 "gram.y" { yyval.member = new_member(yyvsp[0].string, NTWKADDR); } break; case 33: -#line 297 "gram.y" +#line 296 "gram.y" { yyval.member = new_member(yyvsp[0].string, WORD); } break; case 35: -#line 303 "gram.y" +#line 302 "gram.y" { list_append(yyvsp[-2].cmndspec, yyvsp[0].cmndspec); #ifdef HAVE_SELINUX @@ -1205,6 +1222,10 @@ case 35: if (yyvsp[0].cmndspec->tags.setenv == UNSPEC && yyvsp[0].cmndspec->prev->tags.setenv != IMPLIED) yyvsp[0].cmndspec->tags.setenv = yyvsp[0].cmndspec->prev->tags.setenv; + if (yyvsp[0].cmndspec->tags.log_input == UNSPEC) + yyvsp[0].cmndspec->tags.log_input = yyvsp[0].cmndspec->prev->tags.log_input; + if (yyvsp[0].cmndspec->tags.log_output == UNSPEC) + yyvsp[0].cmndspec->tags.log_output = yyvsp[0].cmndspec->prev->tags.log_output; if ((tq_empty(&yyvsp[0].cmndspec->runasuserlist) && tq_empty(&yyvsp[0].cmndspec->runasgrouplist)) && (!tq_empty(&yyvsp[0].cmndspec->prev->runasuserlist) || @@ -1216,7 +1237,7 @@ case 35: } break; case 36: -#line 331 "gram.y" +#line 334 "gram.y" { struct cmndspec *cs = emalloc(sizeof(*cs)); if (yyvsp[-3].runas != NULL) { @@ -1243,80 +1264,80 @@ case 36: } break; case 37: -#line 357 "gram.y" +#line 360 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = FALSE; } break; case 38: -#line 361 "gram.y" +#line 364 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = TRUE; } break; case 39: -#line 367 "gram.y" +#line 370 "gram.y" { yyval.string = yyvsp[0].string; } break; case 40: -#line 372 "gram.y" +#line 375 "gram.y" { yyval.string = yyvsp[0].string; } break; case 41: -#line 377 "gram.y" +#line 380 "gram.y" { yyval.seinfo.role = NULL; yyval.seinfo.type = NULL; } break; case 42: -#line 381 "gram.y" +#line 384 "gram.y" { yyval.seinfo.role = yyvsp[0].string; yyval.seinfo.type = NULL; } break; case 43: -#line 385 "gram.y" +#line 388 "gram.y" { yyval.seinfo.type = yyvsp[0].string; yyval.seinfo.role = NULL; } break; case 44: -#line 389 "gram.y" +#line 392 "gram.y" { yyval.seinfo.role = yyvsp[-1].string; yyval.seinfo.type = yyvsp[0].string; } break; case 45: -#line 393 "gram.y" +#line 396 "gram.y" { yyval.seinfo.type = yyvsp[-1].string; yyval.seinfo.role = yyvsp[0].string; } break; case 46: -#line 399 "gram.y" +#line 402 "gram.y" { yyval.runas = NULL; } break; case 47: -#line 402 "gram.y" +#line 405 "gram.y" { yyval.runas = yyvsp[-1].runas; } break; case 48: -#line 407 "gram.y" +#line 410 "gram.y" { yyval.runas = emalloc(sizeof(struct runascontainer)); yyval.runas->runasusers = yyvsp[0].member; @@ -1324,7 +1345,7 @@ case 48: } break; case 49: -#line 412 "gram.y" +#line 415 "gram.y" { yyval.runas = emalloc(sizeof(struct runascontainer)); yyval.runas->runasusers = yyvsp[-2].member; @@ -1332,7 +1353,7 @@ case 49: } break; case 50: -#line 417 "gram.y" +#line 420 "gram.y" { yyval.runas = emalloc(sizeof(struct runascontainer)); yyval.runas->runasusers = NULL; @@ -1340,61 +1361,86 @@ case 50: } break; case 51: -#line 424 "gram.y" +#line 427 "gram.y" { - yyval.tag.nopasswd = yyval.tag.noexec = yyval.tag.setenv = UNSPEC; + yyval.tag.nopasswd = yyval.tag.noexec = yyval.tag.setenv = + yyval.tag.log_input = yyval.tag.log_output = UNSPEC; } break; case 52: -#line 427 "gram.y" +#line 431 "gram.y" { yyval.tag.nopasswd = TRUE; } break; case 53: -#line 430 "gram.y" +#line 434 "gram.y" { yyval.tag.nopasswd = FALSE; } break; case 54: -#line 433 "gram.y" +#line 437 "gram.y" { yyval.tag.noexec = TRUE; } break; case 55: -#line 436 "gram.y" +#line 440 "gram.y" { yyval.tag.noexec = FALSE; } break; case 56: -#line 439 "gram.y" +#line 443 "gram.y" { yyval.tag.setenv = TRUE; } break; case 57: -#line 442 "gram.y" +#line 446 "gram.y" { yyval.tag.setenv = FALSE; } break; case 58: -#line 447 "gram.y" +#line 449 "gram.y" { - yyval.member = new_member(NULL, ALL); + yyval.tag.log_input = TRUE; } break; case 59: -#line 450 "gram.y" +#line 452 "gram.y" { - yyval.member = new_member(yyvsp[0].string, ALIAS); + yyval.tag.log_input = FALSE; } break; case 60: -#line 453 "gram.y" +#line 455 "gram.y" +{ + yyval.tag.log_output = TRUE; + } +break; +case 61: +#line 458 "gram.y" +{ + yyval.tag.log_output = FALSE; + } +break; +case 62: +#line 463 "gram.y" +{ + yyval.member = new_member(NULL, ALL); + } +break; +case 63: +#line 466 "gram.y" +{ + yyval.member = new_member(yyvsp[0].string, ALIAS); + } +break; +case 64: +#line 469 "gram.y" { struct sudo_command *c = emalloc(sizeof(*c)); c->cmnd = yyvsp[0].command.cmnd; @@ -1402,8 +1448,8 @@ case 60: yyval.member = new_member((char *)c, COMMAND); } break; -case 63: -#line 465 "gram.y" +case 67: +#line 481 "gram.y" { char *s; if ((s = alias_add(yyvsp[-2].string, HOSTALIAS, yyvsp[0].member)) != NULL) { @@ -1412,15 +1458,15 @@ case 63: } } break; -case 65: -#line 475 "gram.y" +case 69: +#line 491 "gram.y" { list_append(yyvsp[-2].member, yyvsp[0].member); yyval.member = yyvsp[-2].member; } break; -case 68: -#line 485 "gram.y" +case 72: +#line 501 "gram.y" { char *s; if ((s = alias_add(yyvsp[-2].string, CMNDALIAS, yyvsp[0].member)) != NULL) { @@ -1429,15 +1475,15 @@ case 68: } } break; -case 70: -#line 495 "gram.y" +case 74: +#line 511 "gram.y" { list_append(yyvsp[-2].member, yyvsp[0].member); yyval.member = yyvsp[-2].member; } break; -case 73: -#line 505 "gram.y" +case 77: +#line 521 "gram.y" { char *s; if ((s = alias_add(yyvsp[-2].string, RUNASALIAS, yyvsp[0].member)) != NULL) { @@ -1446,8 +1492,8 @@ case 73: } } break; -case 76: -#line 518 "gram.y" +case 80: +#line 534 "gram.y" { char *s; if ((s = alias_add(yyvsp[-2].string, USERALIAS, yyvsp[0].member)) != NULL) { @@ -1456,97 +1502,97 @@ case 76: } } break; -case 78: -#line 528 "gram.y" +case 82: +#line 544 "gram.y" { list_append(yyvsp[-2].member, yyvsp[0].member); yyval.member = yyvsp[-2].member; } break; -case 79: -#line 534 "gram.y" +case 83: +#line 550 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = FALSE; } break; -case 80: -#line 538 "gram.y" +case 84: +#line 554 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = TRUE; } break; -case 81: -#line 544 "gram.y" +case 85: +#line 560 "gram.y" { yyval.member = new_member(yyvsp[0].string, ALIAS); } break; -case 82: -#line 547 "gram.y" +case 86: +#line 563 "gram.y" { yyval.member = new_member(NULL, ALL); } break; -case 83: -#line 550 "gram.y" +case 87: +#line 566 "gram.y" { yyval.member = new_member(yyvsp[0].string, NETGROUP); } break; -case 84: -#line 553 "gram.y" +case 88: +#line 569 "gram.y" { yyval.member = new_member(yyvsp[0].string, USERGROUP); } break; -case 85: -#line 556 "gram.y" +case 89: +#line 572 "gram.y" { yyval.member = new_member(yyvsp[0].string, WORD); } break; -case 87: -#line 562 "gram.y" +case 91: +#line 578 "gram.y" { list_append(yyvsp[-2].member, yyvsp[0].member); yyval.member = yyvsp[-2].member; } break; -case 88: -#line 568 "gram.y" +case 92: +#line 584 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = FALSE; } break; -case 89: -#line 572 "gram.y" +case 93: +#line 588 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = TRUE; } break; -case 90: -#line 578 "gram.y" +case 94: +#line 594 "gram.y" { yyval.member = new_member(yyvsp[0].string, ALIAS); } break; -case 91: -#line 581 "gram.y" +case 95: +#line 597 "gram.y" { yyval.member = new_member(NULL, ALL); } break; -case 92: -#line 584 "gram.y" +case 96: +#line 600 "gram.y" { yyval.member = new_member(yyvsp[0].string, WORD); } break; -#line 1498 "y.tab.c" +#line 1544 "y.tab.c" } yyssp -= yym; yystate = *yyssp;