From: Todd C. Miller Date: Wed, 4 Aug 1999 15:31:47 +0000 (+0000) Subject: regen X-Git-Tag: SUDO_1_6_0~167 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0d5a675f5b0a96c77f32921d0aca79fecb745b2b;p=sudo regen --- diff --git a/lex.yy.c b/lex.yy.c index d27a06948..96f1c82d8 100644 --- a/lex.yy.c +++ b/lex.yy.c @@ -286,28 +286,28 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); #define YY_NUM_RULES 27 #define YY_END_OF_BUFFER 28 -static yyconst short int yy_accept[182] = +static yyconst short int yy_accept[184] = { 0, 0, 0, 0, 0, 0, 0, 28, 26, 1, 5, 9, 26, 26, 19, 26, 8, 12, 26, 25, 11, 10, 24, 24, 24, 26, 25, 7, 4, 7, 7, 7, 4, 7, 7, 7, 4, 4, 7, 7, 7, 26, 7, 26, 22, 21, 21, 20, 20, 20, 21, - 1, 0, 6, 16, 15, 23, 25, 0, 25, 25, - 0, 24, 24, 24, 0, 2, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, - 21, 21, 21, 21, 20, 20, 20, 0, 25, 18, - 24, 24, 7, 7, 7, 7, 7, 21, 20, 20, - - 0, 0, 24, 24, 7, 7, 7, 7, 20, 20, - 0, 0, 24, 24, 7, 7, 7, 7, 20, 20, - 0, 0, 24, 24, 7, 7, 7, 7, 20, 20, - 17, 0, 24, 0, 14, 7, 7, 7, 20, 0, - 17, 24, 7, 7, 7, 20, 0, 17, 0, 13, + 1, 9, 0, 6, 16, 15, 23, 25, 0, 25, + 25, 0, 24, 24, 24, 0, 2, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 3, 3, 21, 21, 21, 21, 20, 20, 20, 0, + 25, 18, 24, 24, 7, 7, 7, 7, 7, 21, + + 20, 20, 0, 0, 24, 24, 7, 7, 7, 7, + 20, 20, 0, 0, 24, 24, 7, 7, 7, 7, + 20, 20, 0, 0, 24, 24, 7, 7, 7, 7, + 20, 20, 17, 0, 24, 0, 14, 7, 7, 7, + 20, 0, 17, 24, 7, 7, 7, 20, 0, 17, + 0, 13, 7, 7, 0, 0, 7, 7, 0, 0, 7, 7, 0, 0, 7, 7, 0, 0, 7, 7, - 0, 0, 7, 7, 0, 0, 7, 7, 0, 0, - 7, 7, 17, 0, 7, 7, 17, 7, 17, 7, - 0 + 0, 0, 7, 7, 17, 0, 7, 7, 17, 7, + 17, 7, 0 } ; static yyconst int yy_ec[256] = @@ -349,59 +349,59 @@ static yyconst int yy_meta[28] = 4, 4, 4, 4, 2, 4, 4 } ; -static yyconst short int yy_base[197] = +static yyconst short int yy_base[199] = { 0, - 0, 0, 27, 0, 54, 0, 445, 446, 442, 446, - 446, 440, 0, 446, 0, 446, 446, 0, 70, 446, - 446, 74, 76, 72, 88, 430, 0, 446, 0, 103, - 130, 446, 0, 78, 157, 446, 0, 184, 420, 423, - 93, 198, 0, 446, 0, 86, 202, 214, 85, 427, - 436, 434, 446, 0, 0, 0, 424, 421, 216, 422, - 0, 412, 111, 210, 157, 446, 0, 0, 0, 218, - 224, 418, 417, 0, 241, 0, 408, 406, 184, 446, - 0, 416, 225, 415, 405, 222, 248, 258, 413, 412, - 256, 253, 266, 409, 410, 404, 397, 407, 258, 260, - - 404, 270, 264, 265, 403, 276, 393, 391, 270, 271, - 282, 402, 276, 279, 289, 401, 389, 392, 281, 286, - 396, 294, 288, 308, 395, 299, 377, 90, 293, 313, - 305, 388, 301, 225, 446, 311, 387, 374, 311, 373, - 313, 329, 363, 322, 331, 335, 326, 363, 337, 446, - 329, 335, 328, 333, 307, 337, 341, 304, 342, 254, - 242, 345, 237, 346, 349, 220, 350, 197, 185, 353, - 180, 354, 168, 160, 153, 143, 131, 126, 446, 0, - 446, 368, 124, 114, 374, 376, 378, 380, 385, 391, - 396, 109, 399, 401, 403, 95 + 0, 0, 27, 0, 54, 0, 449, 450, 446, 450, + 443, 443, 0, 450, 0, 450, 450, 0, 70, 450, + 450, 74, 76, 72, 88, 433, 0, 450, 440, 103, + 130, 450, 0, 78, 157, 450, 0, 184, 422, 425, + 93, 198, 0, 450, 0, 86, 202, 214, 85, 429, + 438, 435, 435, 450, 0, 0, 0, 425, 422, 216, + 423, 0, 413, 111, 210, 157, 450, 0, 429, 0, + 0, 218, 224, 418, 417, 0, 241, 0, 408, 406, + 184, 450, 0, 416, 225, 415, 405, 222, 248, 258, + 413, 412, 256, 253, 266, 409, 410, 404, 397, 407, + + 258, 260, 404, 270, 264, 265, 403, 276, 393, 391, + 270, 271, 282, 402, 276, 279, 289, 401, 389, 392, + 281, 286, 396, 294, 288, 308, 395, 299, 377, 90, + 293, 313, 305, 388, 301, 225, 450, 311, 387, 374, + 311, 373, 313, 329, 363, 322, 331, 335, 326, 363, + 337, 450, 329, 335, 328, 333, 307, 337, 341, 304, + 342, 254, 242, 345, 237, 346, 349, 220, 350, 197, + 185, 353, 180, 354, 168, 160, 153, 143, 131, 126, + 450, 0, 450, 368, 124, 114, 374, 376, 378, 380, + 385, 391, 396, 109, 399, 401, 403, 95 } ; -static yyconst short int yy_def[197] = +static yyconst short int yy_def[199] = { 0, - 181, 1, 181, 3, 181, 5, 181, 181, 181, 181, - 181, 182, 183, 181, 184, 181, 181, 185, 186, 181, - 181, 187, 187, 23, 181, 188, 189, 181, 189, 181, - 181, 181, 189, 190, 181, 181, 189, 181, 38, 38, - 191, 38, 192, 181, 192, 193, 194, 194, 48, 195, - 181, 182, 181, 183, 184, 185, 186, 181, 186, 188, - 196, 23, 23, 23, 181, 181, 189, 30, 31, 190, - 35, 189, 35, 42, 181, 38, 38, 38, 181, 181, - 192, 193, 193, 195, 48, 48, 48, 181, 186, 196, - 23, 23, 189, 35, 75, 38, 38, 193, 48, 48, - - 181, 181, 23, 23, 189, 189, 38, 38, 48, 48, - 181, 181, 23, 23, 189, 189, 38, 38, 48, 48, - 181, 181, 23, 23, 189, 189, 38, 38, 48, 48, - 181, 181, 23, 181, 181, 189, 189, 38, 48, 181, - 181, 124, 189, 189, 38, 130, 181, 181, 181, 181, - 189, 189, 181, 181, 189, 189, 181, 181, 189, 189, - 181, 181, 189, 189, 181, 181, 189, 189, 181, 181, - 189, 189, 181, 181, 189, 189, 181, 189, 181, 189, - 0, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181 + 183, 1, 183, 3, 183, 5, 183, 183, 183, 183, + 183, 184, 185, 183, 186, 183, 183, 187, 188, 183, + 183, 189, 189, 23, 183, 190, 191, 183, 191, 183, + 183, 183, 191, 192, 183, 183, 191, 183, 38, 38, + 193, 38, 194, 183, 194, 195, 196, 196, 48, 197, + 183, 183, 184, 183, 185, 186, 187, 188, 183, 188, + 190, 198, 23, 23, 23, 183, 183, 191, 191, 30, + 31, 192, 35, 191, 35, 42, 183, 38, 38, 38, + 183, 183, 194, 195, 195, 197, 48, 48, 48, 183, + 188, 198, 23, 23, 191, 35, 77, 38, 38, 195, + + 48, 48, 183, 183, 23, 23, 191, 191, 38, 38, + 48, 48, 183, 183, 23, 23, 191, 191, 38, 38, + 48, 48, 183, 183, 23, 23, 191, 191, 38, 38, + 48, 48, 183, 183, 23, 183, 183, 191, 191, 38, + 48, 183, 183, 126, 191, 191, 38, 132, 183, 183, + 183, 183, 191, 191, 183, 183, 191, 191, 183, 183, + 191, 191, 183, 183, 191, 191, 183, 183, 191, 191, + 183, 183, 191, 191, 183, 183, 191, 191, 183, 191, + 183, 191, 0, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183 } ; -static yyconst short int yy_nxt[474] = +static yyconst short int yy_nxt[478] = { 0, 8, 9, 10, 11, 12, 13, 14, 8, 15, 16, 8, 17, 18, 19, 20, 21, 22, 22, 22, 23, @@ -411,53 +411,53 @@ static yyconst short int yy_nxt[474] = 38, 41, 27, 42, 8, 9, 10, 11, 43, 13, 8, 44, 15, 16, 45, 17, 18, 46, 20, 21, 47, 47, 47, 48, 47, 49, 47, 47, 25, 45, - 50, 58, 67, 59, 60, 61, 60, 61, 64, 65, - 66, 134, 62, 67, 79, 66, 63, 58, 90, 83, - - 60, 87, 60, 67, 135, 85, 67, 67, 67, 67, - 67, 67, 81, 68, 67, 67, 68, 55, 67, 68, - 68, 68, 68, 68, 68, 68, 68, 54, 68, 68, - 67, 62, 91, 67, 67, 67, 67, 67, 67, 180, - 69, 67, 67, 69, 179, 67, 69, 69, 69, 69, - 69, 69, 69, 69, 171, 69, 69, 67, 65, 66, - 67, 67, 67, 67, 67, 67, 178, 71, 72, 67, - 73, 169, 67, 71, 71, 71, 71, 71, 71, 71, - 71, 177, 71, 71, 67, 65, 66, 67, 67, 67, - 67, 67, 67, 175, 74, 75, 67, 76, 173, 67, - - 76, 76, 76, 76, 76, 76, 76, 76, 163, 76, - 74, 74, 84, 61, 74, 74, 74, 74, 74, 74, - 74, 74, 67, 74, 84, 61, 134, 58, 84, 89, - 62, 161, 92, 67, 86, 67, 58, 71, 98, 135, - 84, 67, 85, 99, 67, 67, 67, 67, 67, 67, - 167, 95, 67, 67, 95, 165, 67, 95, 95, 95, - 95, 95, 95, 95, 95, 155, 95, 95, 85, 101, - 100, 102, 103, 62, 109, 104, 62, 105, 85, 106, - 85, 101, 110, 112, 62, 62, 113, 105, 114, 116, - 85, 85, 119, 121, 120, 122, 62, 124, 123, 62, - - 125, 85, 126, 129, 130, 121, 85, 132, 62, 134, - 125, 133, 137, 85, 134, 153, 139, 140, 141, 142, - 159, 62, 135, 143, 144, 140, 148, 135, 62, 146, - 149, 85, 149, 85, 143, 152, 149, 153, 149, 154, - 155, 157, 156, 150, 153, 150, 158, 143, 155, 150, - 160, 150, 161, 163, 162, 164, 161, 163, 166, 168, - 169, 171, 170, 172, 169, 171, 174, 176, 52, 52, - 52, 52, 52, 52, 56, 140, 151, 56, 56, 57, - 57, 62, 62, 60, 60, 67, 147, 67, 67, 67, - 67, 70, 145, 70, 70, 70, 70, 80, 125, 121, - - 138, 80, 82, 82, 85, 85, 84, 84, 136, 131, - 128, 127, 105, 101, 118, 117, 115, 111, 58, 108, - 107, 75, 71, 61, 58, 85, 61, 181, 97, 96, - 94, 93, 62, 61, 88, 181, 53, 51, 61, 78, - 77, 61, 53, 51, 181, 7, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181 + 50, 59, 68, 60, 61, 62, 61, 62, 65, 66, + 67, 136, 63, 68, 81, 67, 64, 59, 92, 85, + + 61, 89, 61, 68, 137, 87, 68, 68, 68, 68, + 68, 68, 83, 70, 68, 68, 70, 56, 68, 70, + 70, 70, 70, 70, 70, 70, 70, 55, 70, 70, + 68, 63, 93, 68, 68, 68, 68, 68, 68, 182, + 71, 68, 68, 71, 181, 68, 71, 71, 71, 71, + 71, 71, 71, 71, 173, 71, 71, 68, 66, 67, + 68, 68, 68, 68, 68, 68, 180, 73, 74, 68, + 75, 171, 68, 73, 73, 73, 73, 73, 73, 73, + 73, 179, 73, 73, 68, 66, 67, 68, 68, 68, + 68, 68, 68, 177, 76, 77, 68, 78, 175, 68, + + 78, 78, 78, 78, 78, 78, 78, 78, 165, 78, + 76, 76, 86, 62, 76, 76, 76, 76, 76, 76, + 76, 76, 68, 76, 86, 62, 136, 59, 86, 91, + 63, 163, 94, 68, 88, 68, 59, 73, 100, 137, + 86, 68, 87, 101, 68, 68, 68, 68, 68, 68, + 169, 97, 68, 68, 97, 167, 68, 97, 97, 97, + 97, 97, 97, 97, 97, 157, 97, 97, 87, 103, + 102, 104, 105, 63, 111, 106, 63, 107, 87, 108, + 87, 103, 112, 114, 63, 63, 115, 107, 116, 118, + 87, 87, 121, 123, 122, 124, 63, 126, 125, 63, + + 127, 87, 128, 131, 132, 123, 87, 134, 63, 136, + 127, 135, 139, 87, 136, 155, 141, 142, 143, 144, + 161, 63, 137, 145, 146, 142, 150, 137, 63, 148, + 151, 87, 151, 87, 145, 154, 151, 155, 151, 156, + 157, 159, 158, 152, 155, 152, 160, 145, 157, 152, + 162, 152, 163, 165, 164, 166, 163, 165, 168, 170, + 171, 173, 172, 174, 171, 173, 176, 178, 53, 53, + 53, 53, 53, 53, 57, 142, 153, 57, 57, 58, + 58, 63, 63, 61, 61, 68, 149, 68, 68, 68, + 68, 72, 147, 72, 72, 72, 72, 82, 127, 123, + + 140, 82, 84, 84, 87, 87, 86, 86, 138, 133, + 130, 129, 107, 103, 120, 119, 117, 113, 59, 110, + 109, 77, 73, 62, 59, 87, 62, 183, 99, 98, + 96, 95, 69, 63, 62, 90, 183, 54, 52, 51, + 62, 80, 79, 69, 62, 54, 52, 51, 183, 7, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183 } ; -static yyconst short int yy_chk[474] = +static yyconst short int yy_chk[478] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -468,49 +468,49 @@ static yyconst short int yy_chk[474] = 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 19, 34, 19, 22, 22, 23, 23, 24, 25, - 25, 128, 24, 34, 41, 41, 23, 46, 196, 46, - - 22, 49, 23, 30, 128, 49, 30, 30, 30, 30, - 30, 30, 192, 30, 30, 30, 30, 184, 30, 30, - 30, 30, 30, 30, 30, 30, 30, 183, 30, 30, - 31, 63, 63, 31, 31, 31, 31, 31, 31, 178, - 31, 31, 31, 31, 177, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 176, 31, 31, 35, 65, 65, - 35, 35, 35, 35, 35, 35, 175, 35, 35, 35, - 35, 174, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 173, 35, 35, 38, 79, 79, 38, 38, 38, - 38, 38, 38, 171, 38, 38, 38, 38, 169, 38, - - 38, 38, 38, 38, 38, 38, 38, 38, 168, 38, + 25, 130, 24, 34, 41, 41, 23, 46, 198, 46, + + 22, 49, 23, 30, 130, 49, 30, 30, 30, 30, + 30, 30, 194, 30, 30, 30, 30, 186, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 185, 30, 30, + 31, 64, 64, 31, 31, 31, 31, 31, 31, 180, + 31, 31, 31, 31, 179, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 178, 31, 31, 35, 66, 66, + 35, 35, 35, 35, 35, 35, 177, 35, 35, 35, + 35, 176, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 175, 35, 35, 38, 81, 81, 38, 38, 38, + 38, 38, 38, 173, 38, 38, 38, 38, 171, 38, + + 38, 38, 38, 38, 38, 38, 38, 38, 170, 38, 38, 42, 47, 47, 42, 42, 42, 42, 42, 42, - 42, 42, 70, 42, 48, 48, 134, 59, 47, 59, - 64, 166, 64, 70, 48, 71, 83, 71, 83, 134, - 48, 75, 86, 86, 75, 75, 75, 75, 75, 75, - 163, 75, 75, 75, 75, 161, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 160, 75, 75, 87, 88, - 87, 88, 91, 92, 99, 92, 91, 93, 99, 93, - 100, 102, 100, 102, 103, 104, 103, 106, 104, 106, - 109, 110, 109, 111, 110, 111, 113, 114, 113, 114, - - 115, 119, 115, 119, 120, 122, 120, 122, 123, 124, - 126, 123, 126, 129, 130, 158, 129, 131, 131, 133, - 155, 133, 124, 136, 136, 141, 141, 130, 124, 139, - 142, 139, 145, 130, 144, 144, 146, 147, 149, 147, - 151, 153, 151, 142, 154, 145, 154, 152, 156, 146, - 156, 149, 157, 159, 157, 159, 162, 164, 162, 164, - 165, 167, 165, 167, 170, 172, 170, 172, 182, 182, - 182, 182, 182, 182, 185, 148, 143, 185, 185, 186, - 186, 187, 187, 188, 188, 189, 140, 189, 189, 189, - 189, 190, 138, 190, 190, 190, 190, 191, 137, 132, - - 127, 191, 193, 193, 194, 194, 195, 195, 125, 121, - 118, 117, 116, 112, 108, 107, 105, 101, 98, 97, - 96, 95, 94, 90, 89, 85, 84, 82, 78, 77, - 73, 72, 62, 60, 58, 57, 52, 51, 50, 40, - 39, 26, 12, 9, 7, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181 + 42, 42, 72, 42, 48, 48, 136, 60, 47, 60, + 65, 168, 65, 72, 48, 73, 85, 73, 85, 136, + 48, 77, 88, 88, 77, 77, 77, 77, 77, 77, + 165, 77, 77, 77, 77, 163, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 162, 77, 77, 89, 90, + 89, 90, 93, 94, 101, 94, 93, 95, 101, 95, + 102, 104, 102, 104, 105, 106, 105, 108, 106, 108, + 111, 112, 111, 113, 112, 113, 115, 116, 115, 116, + + 117, 121, 117, 121, 122, 124, 122, 124, 125, 126, + 128, 125, 128, 131, 132, 160, 131, 133, 133, 135, + 157, 135, 126, 138, 138, 143, 143, 132, 126, 141, + 144, 141, 147, 132, 146, 146, 148, 149, 151, 149, + 153, 155, 153, 144, 156, 147, 156, 154, 158, 148, + 158, 151, 159, 161, 159, 161, 164, 166, 164, 166, + 167, 169, 167, 169, 172, 174, 172, 174, 184, 184, + 184, 184, 184, 184, 187, 150, 145, 187, 187, 188, + 188, 189, 189, 190, 190, 191, 142, 191, 191, 191, + 191, 192, 140, 192, 192, 192, 192, 193, 139, 134, + + 129, 193, 195, 195, 196, 196, 197, 197, 127, 123, + 120, 119, 118, 114, 110, 109, 107, 103, 100, 99, + 98, 97, 96, 92, 91, 87, 86, 84, 80, 79, + 75, 74, 69, 63, 61, 59, 58, 53, 52, 51, + 50, 40, 39, 29, 26, 12, 11, 9, 7, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183 } ; static yy_state_type yy_last_accepting_state; @@ -617,7 +617,7 @@ extern void yyerror __P((char *)); #define GOTRUNAS 2 -#line 614 "lex.yy.c" +#line 621 "lex.yy.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -768,9 +768,9 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 94 "parse.lex" +#line 101 "parse.lex" -#line 767 "lex.yy.c" +#line 774 "lex.yy.c" if ( yy_init ) { @@ -821,13 +821,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 182 ) + if ( yy_current_state >= 184 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 446 ); + while ( yy_base[yy_current_state] != 450 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -855,14 +855,14 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 95 "parse.lex" +#line 102 "parse.lex" { /* throw away space/tabs */ sawspace = TRUE; /* but remember for fill_args */ } YY_BREAK case 2: YY_RULE_SETUP -#line 99 "parse.lex" +#line 106 "parse.lex" { sawspace = TRUE; /* remember for fill_args */ ++sudolineno; @@ -871,7 +871,7 @@ YY_RULE_SETUP YY_BREAK case 3: YY_RULE_SETUP -#line 105 "parse.lex" +#line 112 "parse.lex" { LEXTRACE("QUOTEDCHAR "); fill_args(yytext + 1, 1, sawspace); @@ -880,7 +880,7 @@ YY_RULE_SETUP YY_BREAK case 4: YY_RULE_SETUP -#line 111 "parse.lex" +#line 118 "parse.lex" { BEGIN INITIAL; unput(*yytext); @@ -889,7 +889,7 @@ YY_RULE_SETUP YY_BREAK case 5: YY_RULE_SETUP -#line 117 "parse.lex" +#line 124 "parse.lex" { ++sudolineno; LEXTRACE("\n"); @@ -898,7 +898,7 @@ YY_RULE_SETUP YY_BREAK case 6: YY_RULE_SETUP -#line 123 "parse.lex" +#line 130 "parse.lex" { ++sudolineno; LEXTRACE("\n"); @@ -907,7 +907,7 @@ YY_RULE_SETUP YY_BREAK case 7: YY_RULE_SETUP -#line 129 "parse.lex" +#line 136 "parse.lex" { LEXTRACE("ARG "); fill_args(yytext, yyleng, sawspace); @@ -916,7 +916,7 @@ YY_RULE_SETUP YY_BREAK case 8: YY_RULE_SETUP -#line 135 "parse.lex" +#line 142 "parse.lex" { LEXTRACE(", "); return(','); @@ -924,14 +924,15 @@ YY_RULE_SETUP YY_BREAK case 9: YY_RULE_SETUP -#line 140 "parse.lex" +#line 147 "parse.lex" { - return('!'); /* return '!' */ + if (yyleng % 2 == 1) + return('!'); /* return '!' */ } YY_BREAK case 10: YY_RULE_SETUP -#line 144 "parse.lex" +#line 152 "parse.lex" { LEXTRACE("= "); return('='); @@ -939,7 +940,7 @@ YY_RULE_SETUP YY_BREAK case 11: YY_RULE_SETUP -#line 149 "parse.lex" +#line 157 "parse.lex" { LEXTRACE(": "); return(':'); @@ -947,14 +948,14 @@ YY_RULE_SETUP YY_BREAK case 12: YY_RULE_SETUP -#line 154 "parse.lex" +#line 162 "parse.lex" { return('.'); } YY_BREAK case 13: YY_RULE_SETUP -#line 158 "parse.lex" +#line 166 "parse.lex" { /* cmnd does not require passwd for this user */ LEXTRACE("NOPASSWD "); @@ -963,7 +964,7 @@ YY_RULE_SETUP YY_BREAK case 14: YY_RULE_SETUP -#line 164 "parse.lex" +#line 172 "parse.lex" { /* cmnd requires passwd for this user */ LEXTRACE("PASSWD "); @@ -972,7 +973,7 @@ YY_RULE_SETUP YY_BREAK case 15: YY_RULE_SETUP -#line 170 "parse.lex" +#line 178 "parse.lex" { /* netgroup */ fill(yytext, yyleng); @@ -981,7 +982,7 @@ YY_RULE_SETUP YY_BREAK case 16: YY_RULE_SETUP -#line 176 "parse.lex" +#line 184 "parse.lex" { /* UN*X group */ fill(yytext, yyleng); @@ -990,7 +991,7 @@ YY_RULE_SETUP YY_BREAK case 17: YY_RULE_SETUP -#line 182 "parse.lex" +#line 190 "parse.lex" { fill(yytext, yyleng); LEXTRACE("NTWKADDR "); @@ -999,7 +1000,7 @@ YY_RULE_SETUP YY_BREAK case 18: YY_RULE_SETUP -#line 188 "parse.lex" +#line 196 "parse.lex" { fill(yytext, yyleng); LEXTRACE("FQHOST "); @@ -1008,7 +1009,7 @@ YY_RULE_SETUP YY_BREAK case 19: YY_RULE_SETUP -#line 194 "parse.lex" +#line 202 "parse.lex" { BEGIN GOTRUNAS; LEXTRACE("RUNAS "); @@ -1017,7 +1018,7 @@ YY_RULE_SETUP YY_BREAK case 20: YY_RULE_SETUP -#line 200 "parse.lex" +#line 208 "parse.lex" { /* Runas_Alias that user can run command as or ALL */ fill(yytext, yyleng); @@ -1032,7 +1033,7 @@ YY_RULE_SETUP YY_BREAK case 21: YY_RULE_SETUP -#line 212 "parse.lex" +#line 220 "parse.lex" { /* username/uid that user can run command as */ fill(yytext, yyleng); @@ -1042,12 +1043,12 @@ YY_RULE_SETUP YY_BREAK case 22: YY_RULE_SETUP -#line 219 "parse.lex" +#line 227 "parse.lex" BEGIN INITIAL; YY_BREAK case 23: YY_RULE_SETUP -#line 222 "parse.lex" +#line 230 "parse.lex" { /* directories can't have args... */ if (yytext[yyleng - 1] == '/') { @@ -1063,20 +1064,21 @@ YY_RULE_SETUP YY_BREAK case 24: YY_RULE_SETUP -#line 235 "parse.lex" +#line 243 "parse.lex" { fill(yytext, yyleng); if (strcmp(yytext, "ALL") == 0) { LEXTRACE("ALL "); return(ALL); + } else { + LEXTRACE("ALIAS "); + return(ALIAS); } - LEXTRACE("ALIAS "); - return(ALIAS); } YY_BREAK case 25: YY_RULE_SETUP -#line 245 "parse.lex" +#line 254 "parse.lex" { fill(yytext, yyleng); if (strcmp(yytext, "Host_Alias") == 0) { @@ -1103,17 +1105,17 @@ YY_RULE_SETUP YY_BREAK case 26: YY_RULE_SETUP -#line 269 "parse.lex" +#line 278 "parse.lex" { return(ERROR); } /* parse error */ YY_BREAK case 27: YY_RULE_SETUP -#line 273 "parse.lex" +#line 282 "parse.lex" ECHO; YY_BREAK -#line 1110 "lex.yy.c" +#line 1119 "lex.yy.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(GOTCMND): case YY_STATE_EOF(GOTRUNAS): @@ -1407,7 +1409,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 182 ) + if ( yy_current_state >= 184 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1442,11 +1444,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 182 ) + if ( yy_current_state >= 184 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 181); + yy_is_jam = (yy_current_state == 183); return yy_is_jam ? 0 : yy_current_state; } @@ -2001,7 +2003,7 @@ int main() return 0; } #endif -#line 273 "parse.lex" +#line 282 "parse.lex" static void fill(s, len) diff --git a/sudo.tab.c b/sudo.tab.c index e5bef6827..eca54e6ab 100644 --- a/sudo.tab.c +++ b/sudo.tab.c @@ -54,6 +54,16 @@ static char yyrcsid[] * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* + * XXX - the whole opFOO naming thing is somewhat bogus. + * + * XXX - the way things are stored for printmatches is stupid, + * they should be stored as elements in an array and then + * list_matches() can format things the way it wants. + * + * XXX - '!' chars are not preserved when expanding Aliases + */ + #include "config.h" #include #ifdef STDC_HEADERS @@ -195,26 +205,26 @@ yyerror(s) #endif parse_error = TRUE; } -#line 175 "parse.yacc" +#line 192 "parse.yacc" typedef union { char *string; int BOOLEAN; struct sudo_command command; int tok; } YYSTYPE; -#line 199 "sudo.tab.c" +#line 216 "sudo.tab.c" #define ALIAS 257 #define NTWKADDR 258 #define FQHOST 259 #define NETGROUP 260 #define USERGROUP 261 #define NAME 262 -#define RUNAS 263 -#define NOPASSWD 264 -#define PASSWD 265 -#define COMMAND 266 -#define COMMENT 267 -#define ALL 268 +#define ALL 263 +#define RUNAS 264 +#define NOPASSWD 265 +#define PASSWD 266 +#define COMMAND 267 +#define COMMENT 268 #define HOSTALIAS 269 #define CMNDALIAS 270 #define USERALIAS 271 @@ -222,168 +232,170 @@ typedef union { #define ERROR 273 #define YYERRCODE 256 short yylhs[] = { -1, - 0, 0, 3, 3, 5, 3, 3, 3, 3, 3, - 6, 6, 11, 14, 16, 14, 15, 15, 15, 15, - 15, 15, 13, 13, 17, 2, 20, 2, 18, 18, - 21, 21, 22, 24, 22, 23, 23, 23, 23, 23, - 19, 19, 19, 1, 1, 1, 8, 8, 26, 25, - 12, 12, 9, 9, 28, 27, 29, 29, 10, 10, - 31, 30, 7, 7, 33, 32, 34, 34, 35, 36, - 35, 4, 4, 4, 4, 4, + 0, 0, 5, 5, 7, 5, 5, 5, 5, 5, + 8, 8, 13, 16, 16, 2, 2, 2, 2, 2, + 2, 15, 15, 17, 20, 21, 20, 18, 18, 22, + 22, 23, 24, 23, 3, 3, 3, 3, 3, 19, + 19, 19, 1, 1, 1, 10, 10, 26, 25, 14, + 14, 11, 11, 28, 27, 29, 29, 12, 12, 31, + 30, 9, 9, 33, 32, 34, 34, 6, 6, 4, + 4, 4, 4, 4, }; short yylen[] = { 2, 1, 2, 1, 2, 0, 3, 2, 2, 2, 2, - 1, 3, 3, 1, 0, 3, 1, 1, 1, 1, - 1, 1, 1, 3, 3, 1, 0, 3, 0, 2, - 1, 3, 1, 0, 3, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, 1, 3, 0, 4, - 1, 3, 1, 3, 0, 4, 1, 3, 1, 3, - 0, 4, 1, 3, 0, 4, 1, 3, 1, 0, - 3, 1, 1, 1, 1, 1, + 1, 3, 3, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 3, 3, 1, 0, 3, 0, 2, 1, + 3, 1, 0, 3, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 3, 0, 4, 1, + 3, 1, 3, 0, 4, 1, 3, 1, 3, 0, + 4, 1, 3, 0, 4, 1, 3, 1, 2, 1, + 1, 1, 1, 1, }; short yydefred[] = { 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 4, - 49, 0, 47, 55, 0, 53, 65, 0, 63, 61, - 0, 59, 2, 75, 74, 73, 72, 76, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 22, 18, 21, - 19, 20, 17, 15, 0, 11, 0, 51, 14, 0, - 48, 0, 54, 0, 64, 0, 60, 0, 0, 0, - 0, 0, 45, 46, 44, 27, 26, 57, 0, 70, - 69, 0, 67, 39, 38, 37, 36, 40, 34, 0, - 31, 33, 16, 12, 0, 0, 23, 0, 52, 0, - 0, 0, 0, 0, 0, 0, 0, 42, 43, 0, - 28, 58, 71, 68, 35, 32, 24, 25, + 48, 0, 46, 54, 0, 52, 64, 0, 62, 60, + 0, 58, 2, 73, 72, 71, 70, 74, 0, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, + 21, 17, 20, 18, 19, 16, 0, 14, 0, 11, + 0, 50, 0, 47, 0, 53, 0, 63, 0, 59, + 15, 0, 0, 0, 0, 44, 43, 45, 26, 25, + 56, 0, 66, 0, 38, 37, 36, 35, 39, 33, + 32, 0, 30, 12, 0, 0, 22, 0, 51, 0, + 0, 0, 0, 0, 0, 0, 41, 42, 0, 27, + 57, 67, 34, 31, 23, 24, }; short yydgoto[] = { 7, - 67, 68, 8, 71, 9, 45, 18, 12, 15, 21, - 46, 47, 86, 48, 49, 58, 87, 88, 100, 90, - 80, 81, 82, 94, 13, 30, 16, 32, 69, 22, - 36, 19, 34, 72, 73, 92, + 70, 48, 81, 30, 8, 31, 9, 49, 18, 12, + 15, 21, 50, 51, 86, 52, 87, 88, 99, 71, + 90, 82, 83, 93, 13, 32, 16, 34, 72, 22, + 38, 19, 36, 74, }; -short yysindex[] = { -247, - -262, 0, -242, -223, -216, -215, -247, 0, -254, 0, - 0, -37, 0, 0, -15, 0, 0, -13, 0, 0, - -12, 0, 0, 0, 0, 0, 0, 0, -33, -14, - -242, -11, -223, -10, -216, -8, -215, 0, 0, 0, - 0, 0, 0, 0, -9, 0, -42, 0, 0, -33, - 0, -2, 0, -29, 0, -20, 0, -33, -33, -209, - -33, 4, 0, 0, 0, 0, 0, 0, 11, 0, - 0, 12, 0, 0, 0, 0, 0, 0, 0, 13, - 0, 0, 0, 0, -20, 14, 0, -236, 0, -2, - -2, -29, -29, -20, -20, 13, -209, 0, 0, -2, - 0, 0, 0, 0, 0, 0, 0, 0, +short yysindex[] = { -242, + -264, 0, -247, -246, -244, -236, -242, 0, -8, 0, + 0, -36, 0, 0, -35, 0, 0, -34, 0, 0, + -27, 0, 0, 0, 0, 0, 0, 0, -215, 0, + 170, -29, -247, -25, -246, -12, -244, -4, -236, 0, + 0, 0, 0, 0, 0, 0, -219, 0, 2, 0, + -41, 0, 170, 0, -21, 0, -8, 0, 174, 0, + 0, 170, -231, 170, 14, 0, 0, 0, 0, 0, + 0, 17, 0, 19, 0, 0, 0, 0, 0, 0, + 0, 20, 0, 0, 174, 21, 0, -259, 0, -248, + -21, -8, -207, 174, 20, -231, 0, 0, -21, 0, + 0, 0, 0, 0, 0, 0, }; -short yyrindex[] = { -224, - 0, 0, 0, 0, 0, 0, -224, 0, 0, 0, +short yyrindex[] = { 181, + 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, 0, 86, 0, 0, 103, 0, 0, 120, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 154, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -21, - 0, 1, 0, 0, 0, 0, 0, 0, 18, 0, - 0, 35, 0, 0, 0, 0, 0, 0, 0, 52, - 0, 0, 0, 0, 0, 69, 0, -1, 0, 0, - 0, 0, 0, 0, 0, 163, -21, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 154, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -33, 0, 1, 0, 0, 0, 0, 0, + 0, 18, 0, 35, 0, 0, 0, 0, 0, 0, + 0, 52, 0, 0, 0, 69, 0, -16, 0, 0, + 0, 0, 0, 0, -28, -33, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, }; short yygindex[] = { 0, - 0, -74, 53, 54, 0, 0, 0, 0, 0, 0, - 2, 15, 0, -31, 0, 0, -35, 0, 0, 0, - -19, -84, 0, 0, 33, 0, 34, 0, 0, 31, - 0, 36, 0, 0, -53, 0, + -24, 15, -26, 41, 64, -55, 0, 0, 0, 0, + 0, 0, 10, 22, 0, 9, -22, 0, 0, -83, + 0, -7, -17, 0, 46, 0, 45, 0, 0, 42, + 0, 47, 0, 0, }; -#define YYTABLESIZE 431 -short yytable[] = { 44, - 50, 61, 24, 70, 10, 25, 26, 27, 1, 105, - 106, 29, 79, 28, 11, 101, 102, 56, 60, 2, - 31, 3, 4, 5, 6, 108, 83, 98, 99, 89, - 66, 41, 5, 14, 66, 5, 5, 5, 103, 104, - 17, 20, 33, 5, 35, 37, 50, 61, 59, 52, - 54, 62, 56, 85, 91, 93, 95, 97, 50, 23, - 84, 107, 29, 51, 62, 96, 53, 57, 13, 0, - 55, 0, 0, 0, 0, 56, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, - 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 9, 0, 0, 0, 0, 0, 0, 62, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, +#define YYTABLESIZE 444 +short yytable[] = { 28, + 49, 73, 64, 10, 29, 97, 98, 101, 66, 11, + 14, 69, 17, 1, 67, 106, 40, 55, 68, 63, + 20, 33, 35, 37, 29, 2, 3, 4, 5, 6, + 39, 53, 85, 49, 65, 55, 102, 41, 42, 43, + 44, 24, 45, 46, 25, 26, 27, 28, 57, 75, + 55, 61, 76, 77, 78, 79, 59, 64, 49, 62, + 91, 61, 92, 94, 96, 100, 103, 65, 13, 40, + 23, 84, 89, 105, 65, 55, 104, 95, 54, 56, + 60, 0, 0, 58, 61, 8, 0, 0, 0, 0, + 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, + 0, 13, 9, 0, 0, 0, 0, 0, 0, 61, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 7, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6, 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, 30, 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, 38, 39, 40, 41, 24, 42, 0, - 25, 26, 27, 0, 43, 29, 74, 0, 28, 75, - 76, 77, 29, 29, 29, 0, 29, 78, 0, 0, - 0, 0, 0, 0, 63, 41, 50, 50, 0, 0, - 50, 50, 50, 64, 41, 65, 41, 50, 50, 50, - 50, 50, 50, 56, 56, 0, 0, 56, 56, 56, - 0, 0, 0, 0, 56, 56, 56, 56, 56, 56, - 66, 66, 0, 0, 66, 66, 66, 0, 0, 0, - 0, 66, 66, 66, 66, 66, 66, 62, 62, 0, - 0, 62, 62, 62, 0, 0, 0, 0, 62, 62, - 62, 62, 62, 62, 13, 13, 0, 0, 13, 13, - 13, 0, 0, 0, 0, 13, 13, 13, 13, 13, - 13, 8, 8, 0, 0, 8, 8, 8, 0, 0, - 0, 0, 8, 8, 8, 8, 8, 8, 9, 9, - 0, 0, 9, 9, 9, 0, 0, 0, 0, 9, + 0, 0, 47, 0, 0, 0, 80, 0, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 28, 0, 0, 0, 0, 29, 28, + 0, 28, 28, 28, 29, 66, 29, 29, 29, 0, + 40, 67, 0, 0, 0, 68, 40, 0, 24, 0, + 40, 25, 26, 27, 28, 0, 49, 49, 0, 0, + 49, 49, 49, 49, 0, 0, 0, 0, 49, 49, + 49, 49, 49, 55, 55, 0, 0, 55, 55, 55, + 55, 0, 0, 0, 0, 55, 55, 55, 55, 55, + 65, 65, 0, 0, 65, 65, 65, 65, 0, 0, + 0, 0, 65, 65, 65, 65, 65, 61, 61, 0, + 0, 61, 61, 61, 61, 0, 0, 0, 0, 61, + 61, 61, 61, 61, 13, 13, 0, 0, 13, 13, + 13, 13, 0, 0, 0, 0, 13, 13, 13, 13, + 13, 8, 8, 0, 0, 8, 8, 8, 8, 0, + 0, 0, 0, 8, 8, 8, 8, 8, 9, 9, + 0, 0, 9, 9, 9, 9, 0, 0, 0, 0, 9, 9, 9, 9, 9, 7, 7, 0, 0, 7, - 7, 7, 0, 0, 0, 0, 7, 7, 7, 7, - 7, 7, 10, 10, 0, 0, 10, 10, 10, 0, - 0, 0, 0, 10, 10, 10, 10, 10, 10, 6, - 6, 0, 0, 6, 6, 6, 0, 0, 0, 30, - 6, 6, 6, 6, 6, 6, 30, 30, 30, 0, - 30, + 7, 7, 7, 0, 0, 0, 0, 7, 7, 7, + 7, 7, 10, 10, 0, 0, 10, 10, 10, 10, + 0, 0, 0, 0, 10, 10, 10, 10, 10, 6, + 6, 0, 0, 6, 6, 6, 6, 0, 0, 0, + 0, 6, 6, 6, 6, 6, 41, 42, 43, 44, + 75, 45, 46, 76, 77, 78, 79, 5, 0, 0, + 5, 5, 5, 5, }; short yycheck[] = { 33, - 0, 44, 257, 33, 267, 260, 261, 262, 256, 94, - 95, 33, 33, 268, 257, 90, 91, 0, 61, 267, - 58, 269, 270, 271, 272, 100, 58, 264, 265, 61, - 33, 33, 257, 257, 0, 260, 261, 262, 92, 93, - 257, 257, 58, 268, 58, 58, 61, 44, 58, 61, - 61, 0, 61, 263, 44, 44, 44, 44, 58, 7, - 59, 97, 9, 31, 50, 85, 33, 37, 0, -1, - 35, -1, -1, -1, -1, 58, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + 0, 57, 44, 268, 33, 265, 266, 91, 257, 257, + 257, 33, 257, 256, 263, 99, 33, 0, 267, 61, + 257, 58, 58, 58, 33, 268, 269, 270, 271, 272, + 58, 61, 264, 33, 0, 61, 92, 257, 258, 259, + 260, 257, 262, 263, 260, 261, 262, 263, 61, 257, + 33, 0, 260, 261, 262, 263, 61, 44, 58, 58, + 44, 47, 44, 44, 44, 90, 93, 33, 0, 29, + 7, 62, 64, 96, 53, 58, 94, 85, 33, 35, + 39, -1, -1, 37, 33, 0, -1, -1, -1, -1, -1, -1, 58, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 0, -1, -1, -1, -1, -1, -1, 58, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, + -1, 33, 0, -1, -1, -1, -1, -1, -1, 58, + -1, -1, -1, -1, -1, -1, -1, -1, 33, 0, -1, -1, -1, -1, -1, -1, 58, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 33, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 33, 0, -1, -1, -1, -1, -1, -1, + -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, 33, -1, -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, 257, 258, 259, 260, 257, 262, -1, - 260, 261, 262, -1, 268, 257, 257, -1, 268, 260, - 261, 262, 264, 265, 266, -1, 268, 268, -1, -1, - -1, -1, -1, -1, 257, 257, 256, 257, -1, -1, - 260, 261, 262, 266, 266, 268, 268, 267, 268, 269, + -1, -1, 33, -1, -1, -1, 33, -1, -1, -1, + -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 257, -1, -1, -1, -1, 257, 263, + -1, 265, 266, 267, 263, 257, 265, 266, 267, -1, + 257, 263, -1, -1, -1, 267, 263, -1, 257, -1, + 267, 260, 261, 262, 263, -1, 256, 257, -1, -1, + 260, 261, 262, 263, -1, -1, -1, -1, 268, 269, 270, 271, 272, 256, 257, -1, -1, 260, 261, 262, - -1, -1, -1, -1, 267, 268, 269, 270, 271, 272, - 256, 257, -1, -1, 260, 261, 262, -1, -1, -1, - -1, 267, 268, 269, 270, 271, 272, 256, 257, -1, - -1, 260, 261, 262, -1, -1, -1, -1, 267, 268, + 263, -1, -1, -1, -1, 268, 269, 270, 271, 272, + 256, 257, -1, -1, 260, 261, 262, 263, -1, -1, + -1, -1, 268, 269, 270, 271, 272, 256, 257, -1, + -1, 260, 261, 262, 263, -1, -1, -1, -1, 268, 269, 270, 271, 272, 256, 257, -1, -1, 260, 261, - 262, -1, -1, -1, -1, 267, 268, 269, 270, 271, - 272, 256, 257, -1, -1, 260, 261, 262, -1, -1, - -1, -1, 267, 268, 269, 270, 271, 272, 256, 257, - -1, -1, 260, 261, 262, -1, -1, -1, -1, 267, + 262, 263, -1, -1, -1, -1, 268, 269, 270, 271, + 272, 256, 257, -1, -1, 260, 261, 262, 263, -1, + -1, -1, -1, 268, 269, 270, 271, 272, 256, 257, + -1, -1, 260, 261, 262, 263, -1, -1, -1, -1, 268, 269, 270, 271, 272, 256, 257, -1, -1, 260, - 261, 262, -1, -1, -1, -1, 267, 268, 269, 270, - 271, 272, 256, 257, -1, -1, 260, 261, 262, -1, - -1, -1, -1, 267, 268, 269, 270, 271, 272, 256, - 257, -1, -1, 260, 261, 262, -1, -1, -1, 257, - 267, 268, 269, 270, 271, 272, 264, 265, 266, -1, - 268, + 261, 262, 263, -1, -1, -1, -1, 268, 269, 270, + 271, 272, 256, 257, -1, -1, 260, 261, 262, 263, + -1, -1, -1, -1, 268, 269, 270, 271, 272, 256, + 257, -1, -1, 260, 261, 262, 263, -1, -1, -1, + -1, 268, 269, 270, 271, 272, 257, 258, 259, 260, + 257, 262, 263, 260, 261, 262, 263, 257, -1, -1, + 260, 261, 262, 263, }; #define YYFINAL 7 #ifndef YYDEBUG @@ -399,8 +411,8 @@ 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, 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,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,"ALIAS", -"NTWKADDR","FQHOST","NETGROUP","USERGROUP","NAME","RUNAS","NOPASSWD","PASSWD", -"COMMAND","COMMENT","ALL","HOSTALIAS","CMNDALIAS","USERALIAS","RUNASALIAS", +"NTWKADDR","FQHOST","NETGROUP","USERGROUP","NAME","ALL","RUNAS","NOPASSWD", +"PASSWD","COMMAND","COMMENT","HOSTALIAS","CMNDALIAS","USERALIAS","RUNASALIAS", "ERROR", }; char *yyrule[] = { @@ -410,7 +422,7 @@ char *yyrule[] = { "entry : COMMENT", "entry : error COMMENT", "$$1 :", -"entry : $$1 user privileges", +"entry : $$1 opuser privileges", "entry : USERALIAS useraliases", "entry : HOSTALIAS hostaliases", "entry : CMNDALIAS cmndaliases", @@ -419,8 +431,7 @@ char *yyrule[] = { "privileges : privileges ':' privilege", "privilege : hostlist '=' cmndspeclist", "ophostspec : hostspec", -"$$2 :", -"ophostspec : '!' $$2 ophostspec", +"ophostspec : '!' hostspec", "hostspec : ALL", "hostspec : NTWKADDR", "hostspec : NETGROUP", @@ -431,15 +442,15 @@ char *yyrule[] = { "cmndspeclist : cmndspeclist ',' cmndspec", "cmndspec : runasspec nopasswd opcmnd", "opcmnd : cmnd", -"$$3 :", -"opcmnd : '!' $$3 opcmnd", +"$$2 :", +"opcmnd : '!' $$2 cmnd", "runasspec :", "runasspec : RUNAS runaslist", "runaslist : oprunasuser", "runaslist : runaslist ',' oprunasuser", "oprunasuser : runasuser", -"$$4 :", -"oprunasuser : '!' $$4 oprunasuser", +"$$3 :", +"oprunasuser : '!' $$3 runasuser", "runasuser : NAME", "runasuser : USERGROUP", "runasuser : NETGROUP", @@ -453,29 +464,28 @@ char *yyrule[] = { "cmnd : COMMAND", "hostaliases : hostalias", "hostaliases : hostaliases ':' hostalias", -"$$5 :", -"hostalias : ALIAS $$5 '=' hostlist", +"$$4 :", +"hostalias : ALIAS $$4 '=' hostlist", "hostlist : ophostspec", "hostlist : hostlist ',' ophostspec", "cmndaliases : cmndalias", "cmndaliases : cmndaliases ':' cmndalias", -"$$6 :", -"cmndalias : ALIAS $$6 '=' cmndlist", +"$$5 :", +"cmndalias : ALIAS $$5 '=' cmndlist", "cmndlist : opcmnd", "cmndlist : cmndlist ',' opcmnd", "runasaliases : runasalias", "runasaliases : runasaliases ':' runasalias", -"$$7 :", -"runasalias : ALIAS $$7 '=' runaslist", +"$$6 :", +"runasalias : ALIAS $$6 '=' runaslist", "useraliases : useralias", "useraliases : useraliases ':' useralias", -"$$8 :", -"useralias : ALIAS $$8 '=' userlist", +"$$7 :", +"useralias : ALIAS $$7 '=' userlist", "userlist : opuser", "userlist : userlist ',' opuser", "opuser : user", -"$$9 :", -"opuser : '!' $$9 opuser", +"opuser : '!' user", "user : NAME", "user : USERGROUP", "user : NETGROUP", @@ -507,7 +517,7 @@ short *yyss; short *yysslim; YYSTYPE *yyvs; int yystacksize; -#line 668 "parse.yacc" +#line 672 "parse.yacc" typedef struct { int type; @@ -838,7 +848,7 @@ init_parser() if (printmatches == TRUE) expand_match_list(); } -#line 835 "sudo.tab.c" +#line 852 "sudo.tab.c" /* allocate initial stack or double stack size, up to YYMAXDEPTH */ #if defined(__cplusplus) || __STDC__ static int yygrowstack(void) @@ -1019,19 +1029,19 @@ yyreduce: switch (yyn) { case 3: -#line 212 "parse.yacc" +#line 233 "parse.yacc" { ; } break; case 4: -#line 214 "parse.yacc" +#line 235 "parse.yacc" { yyerrok; } break; case 5: -#line 215 "parse.yacc" +#line 236 "parse.yacc" { push; } break; case 6: -#line 215 "parse.yacc" +#line 236 "parse.yacc" { while (top && user_matches != TRUE) { pop; @@ -1039,23 +1049,23 @@ case 6: } break; case 7: -#line 221 "parse.yacc" +#line 242 "parse.yacc" { ; } break; case 8: -#line 223 "parse.yacc" +#line 244 "parse.yacc" { ; } break; case 9: -#line 225 "parse.yacc" +#line 246 "parse.yacc" { ; } break; case 10: -#line 227 "parse.yacc" +#line 248 "parse.yacc" { ; } break; case 13: -#line 235 "parse.yacc" +#line 256 "parse.yacc" { /* * We already did a push if necessary in @@ -1067,72 +1077,71 @@ case 13: no_passwd = -1; } break; -case 15: -#line 248 "parse.yacc" +case 14: +#line 268 "parse.yacc" { - push; + if (yyvsp[0].BOOLEAN == TRUE) + host_matches = TRUE; } break; -case 16: -#line 250 "parse.yacc" +case 15: +#line 272 "parse.yacc" { - pop; - if (host_matched == TRUE) + if (yyvsp[0].BOOLEAN == TRUE) host_matches = FALSE; - else if (host_matched == FALSE) - host_matches = TRUE; } break; -case 17: -#line 258 "parse.yacc" +case 16: +#line 277 "parse.yacc" { - host_matches = TRUE; + yyval.BOOLEAN = TRUE; + free(yyvsp[0].string); } break; -case 18: -#line 261 "parse.yacc" +case 17: +#line 281 "parse.yacc" { if (addr_matches(yyvsp[0].string)) - host_matches = TRUE; + yyval.BOOLEAN = TRUE; free(yyvsp[0].string); } break; -case 19: -#line 266 "parse.yacc" +case 18: +#line 286 "parse.yacc" { if (netgr_matches(yyvsp[0].string, user_host, NULL)) - host_matches = TRUE; + yyval.BOOLEAN = TRUE; free(yyvsp[0].string); } break; -case 20: -#line 271 "parse.yacc" +case 19: +#line 291 "parse.yacc" { if (strcasecmp(user_shost, yyvsp[0].string) == 0) - host_matches = TRUE; + yyval.BOOLEAN = TRUE; free(yyvsp[0].string); } break; -case 21: -#line 276 "parse.yacc" +case 20: +#line 296 "parse.yacc" { if (strcasecmp(user_host, yyvsp[0].string) == 0) - host_matches = TRUE; + yyval.BOOLEAN = TRUE; free(yyvsp[0].string); } break; -case 22: -#line 281 "parse.yacc" +case 21: +#line 301 "parse.yacc" { /* could be an all-caps hostname */ if (find_alias(yyvsp[0].string, HOST_ALIAS) == TRUE || strcasecmp(user_shost, yyvsp[0].string) == 0) - host_matches = TRUE; + yyval.BOOLEAN = TRUE; free(yyvsp[0].string); } break; -case 25: -#line 294 "parse.yacc" +case 24: +#line 314 "parse.yacc" { if (printmatches == TRUE && (runas_matches == -1 || cmnd_matches == -1)) { @@ -1152,39 +1161,33 @@ case 25: cmnd_matches = -1; } break; -case 26: -#line 314 "parse.yacc" -{ ; } +case 25: +#line 334 "parse.yacc" +{ + if (yyvsp[0].BOOLEAN == TRUE) + cmnd_matches = TRUE; + } break; -case 27: -#line 315 "parse.yacc" +case 26: +#line 338 "parse.yacc" { if (printmatches == TRUE && host_matches == TRUE && user_matches == TRUE) { append("!", &cm_list[cm_list_len].cmnd, &cm_list[cm_list_len].cmnd_len, &cm_list[cm_list_len].cmnd_size, 0); - push; - user_matches = TRUE; - host_matches = TRUE; - } else { - push; } } break; -case 28: -#line 327 "parse.yacc" +case 27: +#line 345 "parse.yacc" { - pop; - if (cmnd_matched == TRUE) + if (yyvsp[0].BOOLEAN == TRUE) cmnd_matches = FALSE; - else if (cmnd_matched == FALSE) - cmnd_matches = TRUE; - yyval.BOOLEAN = cmnd_matches; } break; -case 29: -#line 337 "parse.yacc" +case 28: +#line 351 "parse.yacc" { /* * If this is the first entry in a command list @@ -1195,51 +1198,42 @@ case 29: (strcmp(RUNAS_DEFAULT, user_runas) == 0); } break; -case 30: -#line 346 "parse.yacc" +case 29: +#line 360 "parse.yacc" { ; } break; -case 33: -#line 353 "parse.yacc" +case 32: +#line 367 "parse.yacc" { if (printmatches == TRUE && host_matches == TRUE && user_matches == TRUE) append("", &cm_list[cm_list_len].runas, &cm_list[cm_list_len].runas_len, &cm_list[cm_list_len].runas_size, ':'); + if (yyvsp[0].BOOLEAN == TRUE) + runas_matches = TRUE; } break; -case 34: -#line 360 "parse.yacc" +case 33: +#line 376 "parse.yacc" { if (printmatches == TRUE && host_matches == TRUE && - user_matches == TRUE) { + user_matches == TRUE) append("!", &cm_list[cm_list_len].runas, &cm_list[cm_list_len].runas_len, &cm_list[cm_list_len].runas_size, ':'); - pushcp; - } else { - push; - } } break; -case 35: -#line 370 "parse.yacc" +case 34: +#line 382 "parse.yacc" { - pop; - /* - * Don't negate FALSE -> TRUE since that would - * make !foo match any time the user specified - * a runas user (via -u) other than foo. - */ - if (runas_matched == TRUE) + if (yyvsp[0].BOOLEAN == TRUE) runas_matches = FALSE; } break; -case 36: -#line 381 "parse.yacc" +case 35: +#line 387 "parse.yacc" { - runas_matches = (strcmp(yyvsp[0].string, user_runas) == 0); if (printmatches == TRUE && in_alias == TRUE) append(yyvsp[0].string, &ga_list[ga_list_len-1].entries, &ga_list[ga_list_len-1].entries_len, @@ -1249,13 +1243,14 @@ case 36: append(yyvsp[0].string, &cm_list[cm_list_len].runas, &cm_list[cm_list_len].runas_len, &cm_list[cm_list_len].runas_size, 0); + if (strcmp(yyvsp[0].string, user_runas) == 0) + yyval.BOOLEAN = TRUE; free(yyvsp[0].string); } break; -case 37: -#line 394 "parse.yacc" +case 36: +#line 401 "parse.yacc" { - runas_matches = usergr_matches(yyvsp[0].string, user_runas); if (printmatches == TRUE && in_alias == TRUE) append(yyvsp[0].string, &ga_list[ga_list_len-1].entries, &ga_list[ga_list_len-1].entries_len, @@ -1266,13 +1261,14 @@ case 37: &cm_list[cm_list_len].runas_len, &cm_list[cm_list_len].runas_size, 0); } + if (usergr_matches(yyvsp[0].string, user_runas)) + yyval.BOOLEAN = TRUE; free(yyvsp[0].string); } break; -case 38: -#line 408 "parse.yacc" +case 37: +#line 416 "parse.yacc" { - runas_matches = netgr_matches(yyvsp[0].string, NULL, user_runas); if (printmatches == TRUE && in_alias == TRUE) append(yyvsp[0].string, &ga_list[ga_list_len-1].entries, &ga_list[ga_list_len-1].entries_len, @@ -1283,18 +1279,14 @@ case 38: &cm_list[cm_list_len].runas_len, &cm_list[cm_list_len].runas_size, 0); } + if (netgr_matches(yyvsp[0].string, NULL, user_runas)) + yyval.BOOLEAN = TRUE; free(yyvsp[0].string); } break; -case 39: -#line 422 "parse.yacc" +case 38: +#line 431 "parse.yacc" { - /* could be an all-caps username */ - if (find_alias(yyvsp[0].string, RUNAS_ALIAS) == TRUE || - strcmp(yyvsp[0].string, user_runas) == 0) - runas_matches = TRUE; - else - runas_matches = FALSE; if (printmatches == TRUE && in_alias == TRUE) append(yyvsp[0].string, &ga_list[ga_list_len-1].entries, &ga_list[ga_list_len-1].entries_len, @@ -1304,13 +1296,16 @@ case 39: append(yyvsp[0].string, &cm_list[cm_list_len].runas, &cm_list[cm_list_len].runas_len, &cm_list[cm_list_len].runas_size, 0); + /* could be an all-caps username */ + if (find_alias(yyvsp[0].string, RUNAS_ALIAS) == TRUE || + strcmp(yyvsp[0].string, user_runas) == 0) + yyval.BOOLEAN = TRUE; free(yyvsp[0].string); } break; -case 40: -#line 440 "parse.yacc" +case 39: +#line 447 "parse.yacc" { - runas_matches = TRUE; if (printmatches == TRUE && in_alias == TRUE) append("ALL", &ga_list[ga_list_len-1].entries, &ga_list[ga_list_len-1].entries_len, @@ -1320,16 +1315,18 @@ case 40: append("ALL", &cm_list[cm_list_len].runas, &cm_list[cm_list_len].runas_len, &cm_list[cm_list_len].runas_size, 0); + yyval.BOOLEAN = TRUE; + free(yyvsp[0].string); } break; -case 41: -#line 454 "parse.yacc" +case 40: +#line 462 "parse.yacc" { ; } break; -case 42: -#line 457 "parse.yacc" +case 41: +#line 465 "parse.yacc" { no_passwd = TRUE; if (printmatches == TRUE && host_matches == TRUE && @@ -1337,8 +1334,8 @@ case 42: cm_list[cm_list_len].nopasswd = TRUE; } break; -case 43: -#line 463 "parse.yacc" +case 42: +#line 471 "parse.yacc" { no_passwd = FALSE; if (printmatches == TRUE && host_matches == TRUE && @@ -1346,8 +1343,8 @@ case 43: cm_list[cm_list_len].nopasswd = FALSE; } break; -case 44: -#line 471 "parse.yacc" +case 43: +#line 479 "parse.yacc" { if (printmatches == TRUE && in_alias == TRUE) { append("ALL", &ga_list[ga_list_len-1].entries, @@ -1362,14 +1359,16 @@ case 44: expand_match_list(); } - yyval.BOOLEAN = cmnd_matches = TRUE; + yyval.BOOLEAN = TRUE; + free(yyvsp[0].string); + if (safe_cmnd) free(safe_cmnd); safe_cmnd = estrdup(user_cmnd); } break; -case 45: -#line 490 "parse.yacc" +case 44: +#line 500 "parse.yacc" { if (printmatches == TRUE && in_alias == TRUE) { append(yyvsp[0].string, &ga_list[ga_list_len-1].entries, @@ -1383,15 +1382,13 @@ case 45: &cm_list[cm_list_len].cmnd_size, 0); expand_match_list(); } - if (find_alias(yyvsp[0].string, CMND_ALIAS) == TRUE) { - cmnd_matches = TRUE; + if (find_alias(yyvsp[0].string, CMND_ALIAS) == TRUE) yyval.BOOLEAN = TRUE; - } free(yyvsp[0].string); } break; -case 46: -#line 509 "parse.yacc" +case 45: +#line 517 "parse.yacc" { if (printmatches == TRUE && in_alias == TRUE) { append(yyvsp[0].command.cmnd, &ga_list[ga_list_len-1].entries, @@ -1414,24 +1411,21 @@ case 46: expand_match_list(); } - /* if NewArgc > 1 pass ptr to 1st arg, else NULL */ - if (command_matches(user_cmnd, (NewArgc > 1) ? - user_args : NULL, yyvsp[0].command.cmnd, yyvsp[0].command.args)) { - cmnd_matches = TRUE; + if (command_matches(user_cmnd, user_args, + yyvsp[0].command.cmnd, yyvsp[0].command.args)) yyval.BOOLEAN = TRUE; - } free(yyvsp[0].command.cmnd); if (yyvsp[0].command.args) free(yyvsp[0].command.args); } break; -case 49: -#line 548 "parse.yacc" +case 48: +#line 553 "parse.yacc" { push; } break; -case 50: -#line 548 "parse.yacc" +case 49: +#line 553 "parse.yacc" { if (host_matches == TRUE && add_alias(yyvsp[-3].string, HOST_ALIAS) == FALSE) @@ -1439,8 +1433,8 @@ case 50: pop; } break; -case 55: -#line 564 "parse.yacc" +case 54: +#line 569 "parse.yacc" { push; if (printmatches == TRUE) { @@ -1451,8 +1445,8 @@ case 55: } } break; -case 56: -#line 572 "parse.yacc" +case 55: +#line 577 "parse.yacc" { if (cmnd_matches == TRUE && add_alias(yyvsp[-3].string, CMND_ALIAS) == FALSE) @@ -1464,12 +1458,12 @@ case 56: in_alias = FALSE; } break; -case 57: -#line 584 "parse.yacc" +case 56: +#line 589 "parse.yacc" { ; } break; -case 61: -#line 592 "parse.yacc" +case 60: +#line 597 "parse.yacc" { push; if (printmatches == TRUE) { @@ -1480,8 +1474,8 @@ case 61: } } break; -case 62: -#line 600 "parse.yacc" +case 61: +#line 605 "parse.yacc" { if (runas_matches > 0 && add_alias(yyvsp[-3].string, RUNAS_ALIAS) == FALSE) @@ -1493,12 +1487,12 @@ case 62: in_alias = FALSE; } break; -case 65: -#line 616 "parse.yacc" +case 64: +#line 621 "parse.yacc" { push; } break; -case 66: -#line 616 "parse.yacc" +case 65: +#line 621 "parse.yacc" { if (user_matches == TRUE && add_alias(yyvsp[-3].string, USER_ALIAS) == FALSE) @@ -1507,64 +1501,63 @@ case 66: free(yyvsp[-3].string); } break; -case 67: -#line 625 "parse.yacc" +case 66: +#line 630 "parse.yacc" { ; } break; -case 70: -#line 630 "parse.yacc" +case 68: +#line 634 "parse.yacc" { - push; + if (yyvsp[0].BOOLEAN == TRUE) + user_matches = TRUE; } break; -case 71: -#line 632 "parse.yacc" +case 69: +#line 638 "parse.yacc" { - pop; - if (user_matched == TRUE) + if (yyvsp[0].BOOLEAN == TRUE) user_matches = FALSE; - else if (user_matched == FALSE) - user_matches = TRUE; } break; -case 72: -#line 640 "parse.yacc" +case 70: +#line 643 "parse.yacc" { if (strcmp(yyvsp[0].string, user_name) == 0) - user_matches = TRUE; + yyval.BOOLEAN = TRUE; free(yyvsp[0].string); } break; -case 73: -#line 645 "parse.yacc" +case 71: +#line 648 "parse.yacc" { if (usergr_matches(yyvsp[0].string, user_name)) - user_matches = TRUE; + yyval.BOOLEAN = TRUE; free(yyvsp[0].string); } break; -case 74: -#line 650 "parse.yacc" +case 72: +#line 653 "parse.yacc" { if (netgr_matches(yyvsp[0].string, NULL, user_name)) - user_matches = TRUE; + yyval.BOOLEAN = TRUE; free(yyvsp[0].string); } break; -case 75: -#line 655 "parse.yacc" +case 73: +#line 658 "parse.yacc" { /* could be an all-caps username */ if (find_alias(yyvsp[0].string, USER_ALIAS) == TRUE || strcmp(yyvsp[0].string, user_name) == 0) - user_matches = TRUE; + yyval.BOOLEAN = TRUE; free(yyvsp[0].string); } break; -case 76: -#line 662 "parse.yacc" +case 74: +#line 665 "parse.yacc" { - user_matches = TRUE; + yyval.BOOLEAN = TRUE; + free(yyvsp[0].string); } break; #line 1564 "sudo.tab.c" diff --git a/sudo.tab.h b/sudo.tab.h index a9aff54b4..a4557cdda 100644 --- a/sudo.tab.h +++ b/sudo.tab.h @@ -4,12 +4,12 @@ #define NETGROUP 260 #define USERGROUP 261 #define NAME 262 -#define RUNAS 263 -#define NOPASSWD 264 -#define PASSWD 265 -#define COMMAND 266 -#define COMMENT 267 -#define ALL 268 +#define ALL 263 +#define RUNAS 264 +#define NOPASSWD 265 +#define PASSWD 266 +#define COMMAND 267 +#define COMMENT 268 #define HOSTALIAS 269 #define CMNDALIAS 270 #define USERALIAS 271