diff --git a/plugins/sudoers/gram.c b/plugins/sudoers/gram.c index c6e596b61..688165aaa 100644 --- a/plugins/sudoers/gram.c +++ b/plugins/sudoers/gram.c @@ -186,321 +186,210 @@ typedef union { const short sudoerslhs[] = { -1, 0, 0, 35, 35, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 31, - 31, 31, 31, 32, 32, 32, 32, 4, 4, 3, - 3, 3, 3, 3, 21, 21, 20, 11, 11, 9, - 9, 9, 9, 9, 2, 2, 1, 33, 33, 33, - 33, 34, 34, 7, 7, 6, 6, 28, 29, 30, - 24, 25, 26, 27, 18, 18, 19, 19, 19, 19, - 19, 23, 23, 23, 23, 23, 23, 23, 23, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 5, 5, 5, 38, 38, 41, - 10, 10, 39, 39, 42, 8, 8, 40, 40, 43, - 37, 37, 44, 14, 14, 12, 12, 13, 13, 13, - 13, 13, 17, 17, 15, 15, 16, 16, 16, + 36, 36, 36, 36, 36, 36, 36, 36, 31, 31, + 32, 32, 4, 4, 3, 3, 3, 3, 3, 21, + 21, 20, 11, 11, 9, 9, 9, 9, 9, 2, + 2, 1, 33, 33, 33, 33, 34, 34, 7, 7, + 6, 6, 28, 29, 30, 24, 25, 26, 27, 18, + 18, 19, 19, 19, 19, 19, 23, 23, 23, 23, + 23, 23, 23, 23, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 5, + 5, 5, 39, 39, 42, 10, 10, 40, 40, 43, + 8, 8, 41, 41, 44, 38, 38, 45, 14, 14, + 12, 12, 13, 13, 13, 13, 13, 17, 17, 15, + 15, 16, 16, 16, 37, 37, }; const short sudoerslen[] = { 2, - 0, 1, 1, 2, 1, 2, 2, 1, 1, 2, - 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, - 4, 3, 4, 3, 4, 3, 4, 1, 3, 1, - 2, 3, 3, 3, 1, 3, 3, 1, 2, 1, - 1, 1, 1, 1, 1, 3, 4, 3, 3, 3, - 3, 1, 3, 1, 2, 1, 2, 3, 3, 3, - 3, 3, 3, 3, 0, 3, 0, 1, 3, 2, - 1, 0, 2, 2, 2, 2, 2, 2, 2, 0, - 2, 2, 2, 2, 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, + 0, 1, 1, 2, 1, 2, 1, 1, 3, 3, + 3, 3, 3, 3, 4, 4, 4, 4, 3, 4, + 3, 4, 1, 3, 1, 2, 3, 3, 3, 1, + 3, 3, 1, 2, 1, 1, 1, 1, 1, 1, + 3, 4, 3, 3, 3, 3, 1, 3, 1, 2, + 1, 2, 3, 3, 3, 3, 3, 3, 3, 0, + 3, 0, 1, 3, 2, 1, 0, 2, 2, 2, + 2, 2, 2, 2, 0, 2, 2, 2, 2, 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, 1, 1, }; const short sudoersdefred[] = { 0, - 0, 118, 120, 121, 122, 0, 0, 0, 0, 0, - 0, 0, 119, 0, 0, 0, 0, 0, 5, 0, - 114, 116, 0, 8, 9, 0, 3, 7, 6, 0, - 0, 0, 0, 28, 0, 40, 43, 42, 44, 41, - 0, 38, 0, 101, 0, 0, 97, 96, 95, 0, - 0, 0, 0, 0, 56, 54, 106, 0, 52, 0, - 0, 0, 98, 0, 0, 103, 0, 0, 111, 0, - 0, 108, 117, 0, 0, 35, 0, 4, 0, 22, - 20, 0, 26, 24, 0, 0, 0, 31, 0, 39, - 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, - 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, - 0, 115, 0, 0, 23, 21, 27, 25, 32, 33, - 34, 29, 102, 48, 49, 50, 51, 107, 53, 0, - 99, 0, 104, 0, 112, 0, 109, 0, 45, 0, - 72, 36, 0, 0, 0, 0, 0, 127, 129, 128, - 0, 123, 125, 0, 0, 66, 46, 0, 0, 0, - 0, 0, 0, 0, 0, 76, 77, 78, 79, 75, - 73, 74, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 93, 94, 91, 92, 47, 124, 62, 61, - 63, 64, 58, 59, 60, + 0, 113, 115, 116, 117, 0, 0, 0, 0, 0, + 0, 0, 114, 0, 0, 0, 0, 0, 5, 0, + 109, 111, 0, 7, 8, 0, 3, 126, 125, 6, + 0, 0, 0, 0, 23, 0, 35, 38, 37, 39, + 36, 0, 33, 0, 96, 0, 0, 92, 91, 90, + 0, 0, 0, 0, 0, 51, 49, 101, 0, 47, + 0, 0, 0, 93, 0, 0, 98, 0, 0, 106, + 0, 0, 103, 112, 0, 0, 30, 0, 4, 0, + 19, 0, 21, 0, 0, 0, 26, 0, 14, 34, + 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 11, 0, 0, 12, 0, + 0, 10, 0, 0, 13, 110, 0, 0, 9, 20, + 22, 27, 28, 29, 24, 97, 17, 15, 16, 43, + 44, 45, 46, 102, 18, 48, 0, 94, 0, 99, + 0, 107, 0, 104, 0, 40, 0, 67, 31, 0, + 0, 0, 0, 0, 122, 124, 123, 0, 118, 120, + 0, 0, 61, 41, 0, 0, 0, 0, 0, 0, + 0, 0, 71, 72, 73, 74, 70, 68, 69, 121, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, + 89, 86, 87, 42, 119, 57, 56, 58, 59, 53, + 54, 55, }; const short sudoersdgoto[] = { 20, - 139, 140, 34, 35, 55, 56, 57, 58, 42, 75, - 44, 21, 22, 23, 152, 153, 154, 141, 145, 76, - 77, 165, 147, 166, 167, 168, 169, 170, 171, 172, - 24, 25, 59, 60, 26, 27, 68, 62, 65, 71, - 63, 66, 72, 69, + 146, 147, 35, 36, 56, 57, 58, 59, 43, 76, + 45, 21, 22, 23, 159, 160, 161, 148, 152, 77, + 78, 172, 154, 173, 174, 175, 176, 177, 178, 179, + 24, 25, 60, 61, 26, 27, 30, 69, 63, 66, + 72, 64, 67, 73, 70, }; const short sudoerssindex[] = - { 565, - 30, 0, 0, 0, 0, -256, -253, -12, 514, 23, - 23, -28, 0, -246, -227, -219, -214, -220, 0, 0, - 0, 0, -9, 0, 0, 565, 0, 0, 0, 4, - 9, 15, -208, 0, 11, 0, 0, 0, 0, 0, - -211, 0, -27, 0, -18, -18, 0, 0, 0, -229, - 6, 10, 14, 20, 0, 0, 0, -17, 0, -31, - 18, 22, 0, 21, 33, 0, 31, 35, 0, 34, - 38, 0, 0, 23, -7, 0, 39, 0, 53, 0, - 0, 67, 0, 0, -193, -190, -160, 0, -12, 0, - 514, 11, 11, 11, 0, -159, -157, -156, -155, -28, - 11, -202, 0, 514, -246, -28, -227, 23, -219, 23, - -214, 0, 70, 514, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, - 0, 69, 0, 73, 0, 73, 0, -25, 0, 74, - 0, 0, 57, -26, 78, 70, -210, 0, 0, 0, - -238, 0, 0, 77, 57, 0, 0, 50, 54, 62, - 63, 64, 65, 66, 632, 0, 0, 0, 0, 0, - 0, 0, 0, 57, 77, -149, -135, -133, -132, -131, - -130, -129, 0, 0, 0, 0, 0, 0, 0, 0, + { -10, + 58, 0, 0, 0, 0, -253, -235, -29, 76, 105, + 105, -32, 0, -229, -205, -191, -188, -157, 0, 0, + 0, 0, -22, 0, 0, -10, 0, 0, 0, 0, + 6, 7, 81, -186, 0, 55, 0, 0, 0, 0, + 0, -146, 0, -31, 0, -30, -30, 0, 0, 0, + -207, 13, 19, 20, 22, 0, 0, 0, -25, 0, + 83, 29, 24, 0, 37, 27, 0, 46, 31, 0, + 50, 33, 0, 0, 105, 3, 0, 35, 0, 58, + 0, 58, 0, -180, -171, -150, 0, -29, 0, 0, + 76, 55, 55, 55, 0, -145, -143, -142, -139, -32, + 55, -169, 0, 76, -229, 0, -32, -205, 0, 105, + -191, 0, 105, -188, 0, 0, 78, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,}; + 0, 0, 0, 0, 0, 0, 92, 0, 93, 0, + 95, 0, 95, 0, -18, 0, 97, 0, 0, -21, + -26, 110, 78, -149, 0, 0, 0, -202, 0, 0, + 108, -21, 0, 0, 96, 98, 99, 100, 101, 102, + 103, 42, 0, 0, 0, 0, 0, 0, 0, 0, + -21, 108, -110, -109, -107, -105, -98, -97, -96, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,}; const short sudoersrindex[] = - { 135, + { 168, 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, 136, 0, 0, 0, 0, - 0, 1, 0, 0, 211, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, + 0, 0, 59, 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, 246, 0, 0, 283, 0, 0, 318, 0, 0, - 353, 0, 0, 0, 0, 0, 388, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 423, 458, 493, 0, 0, 0, 0, 0, 0, - 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 584, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, - 0, 71, 0, 106, 0, 141, 0, 96, 0, 176, - 0, 0, 97, 99, 0, 584, 665, 0, 0, 0, - 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 102, 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, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36, 0, 38, 0, + 39, 0, 44, 0, 129, 0, 52, 0, 0, 130, + 131, 0, 9, 75, 0, 0, 0, 0, 0, 0, + 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 133, 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,}; const short sudoersgindex[] = { 0, - -2, 0, 56, 16, 98, 86, -100, 41, 108, -6, - 61, 79, 137, 12, -20, 5, 2, 0, 0, 44, + 23, 0, 87, 84, 126, 117, -91, 72, 138, -4, + 90, 107, 165, 10, 4, 26, 25, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 58, 0, 0, 133, 0, 0, 0, 0, - 60, 55, 52, 59, + 0, 0, 86, 0, 0, 163, -6, 0, 0, 0, + 0, 85, 88, 77, 82, }; -#define YYTABLESIZE 969 +#define YYTABLESIZE 391 const short sudoerstable[] = - { 128, - 30, 50, 43, 80, 50, 33, 30, 18, 83, 31, - 30, 61, 102, 81, 33, 33, 91, 74, 84, 148, - 33, 45, 46, 41, 149, 74, 100, 47, 48, 28, - 64, 155, 143, 30, 74, 100, 91, 2, 67, 29, - 3, 4, 5, 70, 30, 100, 36, 150, 37, 38, - 88, 39, 115, 113, 89, 18, 49, 86, 92, 87, - 93, 94, 116, 96, 197, 13, 117, 97, 100, 119, - 105, 98, 120, 101, 40, 85, 118, 99, 104, 105, - 105, 106, 158, 159, 160, 161, 162, 163, 164, 151, - 107, 108, 109, 100, 110, 111, 114, 130, 51, 52, - 53, 54, 121, 105, 124, 113, 125, 126, 127, 138, - 176, 91, 100, 199, 177, 113, 74, 146, 156, 134, - 174, 136, 178, 179, 180, 181, 182, 200, 105, 201, - 202, 203, 204, 205, 1, 2, 67, 71, 113, 68, - 110, 70, 69, 157, 122, 103, 132, 95, 90, 144, - 110, 123, 112, 198, 73, 173, 175, 142, 78, 129, - 0, 133, 137, 113, 131, 0, 0, 135, 0, 0, - 0, 0, 0, 110, 0, 37, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 47, 48, 0, 47, 48, - 0, 32, 2, 37, 0, 3, 4, 5, 0, 0, - 32, 32, 0, 15, 0, 12, 32, 0, 36, 0, - 37, 38, 0, 39, 49, 12, 30, 49, 30, 79, - 13, 30, 30, 30, 82, 30, 30, 30, 30, 30, - 30, 30, 51, 52, 53, 54, 40, 0, 12, 0, - 2, 0, 13, 3, 4, 5, 30, 30, 30, 30, - 30, 100, 13, 100, 0, 0, 100, 100, 100, 0, - 100, 100, 100, 100, 100, 100, 100, 0, 13, 0, - 0, 0, 0, 0, 148, 13, 0, 11, 0, 149, - 0, 100, 100, 100, 100, 100, 105, 11, 105, 0, - 0, 105, 105, 105, 0, 105, 105, 105, 105, 105, - 105, 105, 150, 0, 0, 0, 0, 0, 0, 0, - 11, 0, 14, 0, 0, 0, 105, 105, 105, 105, - 105, 113, 14, 113, 0, 0, 113, 113, 113, 0, - 113, 113, 113, 113, 113, 113, 113, 0, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 10, 0, 0, - 0, 113, 113, 113, 113, 113, 110, 10, 110, 0, - 0, 110, 110, 110, 0, 110, 110, 110, 110, 110, - 110, 110, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 0, 18, 0, 0, 0, 110, 110, 110, 110, - 110, 37, 18, 37, 0, 0, 37, 37, 37, 0, - 37, 37, 37, 37, 37, 37, 37, 0, 0, 0, - 0, 0, 0, 0, 0, 18, 0, 16, 0, 0, - 0, 37, 37, 37, 37, 37, 15, 16, 15, 0, - 0, 15, 15, 15, 0, 15, 15, 15, 15, 15, - 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 17, 0, 0, 0, 15, 15, 15, 15, - 15, 12, 17, 12, 0, 0, 12, 12, 12, 0, - 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, - 0, 0, 0, 0, 0, 17, 0, 19, 0, 0, - 0, 12, 12, 12, 12, 12, 0, 19, 13, 0, - 13, 0, 0, 13, 13, 13, 41, 13, 13, 13, - 13, 13, 13, 13, 0, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 0, 0, 0, 0, 13, 13, - 13, 13, 13, 11, 19, 11, 0, 0, 11, 11, - 11, 0, 11, 11, 11, 11, 11, 11, 11, 0, - 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, - 0, 0, 0, 11, 11, 11, 11, 11, 14, 0, - 14, 0, 0, 14, 14, 14, 65, 14, 14, 14, - 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, - 14, 14, 14, 10, 0, 10, 0, 0, 10, 10, - 10, 0, 10, 10, 10, 10, 10, 10, 10, 0, - 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, - 0, 0, 0, 10, 10, 10, 10, 10, 18, 0, - 18, 0, 0, 18, 18, 18, 0, 18, 18, 18, - 18, 18, 18, 18, 0, 0, 0, 80, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 18, 18, - 18, 18, 18, 16, 0, 16, 0, 0, 16, 16, - 16, 0, 16, 16, 16, 16, 16, 16, 16, 0, + { 19, + 51, 34, 34, 34, 44, 28, 28, 34, 134, 31, + 42, 158, 91, 75, 18, 29, 29, 75, 100, 46, + 47, 75, 18, 28, 81, 83, 28, 32, 62, 89, + 28, 162, 28, 29, 28, 95, 29, 100, 108, 150, + 29, 60, 29, 105, 29, 95, 91, 100, 108, 48, + 49, 32, 65, 105, 28, 155, 106, 28, 25, 109, + 156, 32, 112, 117, 29, 115, 68, 29, 25, 71, + 96, 119, 87, 120, 51, 121, 97, 98, 50, 99, + 204, 105, 122, 157, 108, 127, 128, 129, 111, 104, + 114, 123, 118, 95, 135, 100, 108, 107, 88, 137, + 2, 105, 25, 3, 4, 5, 110, 75, 42, 32, + 113, 37, 124, 38, 39, 51, 40, 145, 130, 141, + 131, 132, 143, 85, 133, 86, 102, 92, 13, 93, + 94, 52, 53, 54, 55, 91, 100, 18, 75, 41, + 153, 84, 101, 165, 166, 167, 168, 169, 170, 171, + 163, 181, 206, 207, 151, 208, 183, 209, 184, 185, + 186, 187, 188, 189, 210, 211, 212, 1, 2, 62, + 66, 63, 65, 64, 125, 164, 95, 103, 139, 90, + 126, 116, 74, 180, 205, 149, 182, 136, 79, 138, + 144, 0, 142, 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 16, 16, 16, 16, 17, 0, - 17, 0, 0, 17, 17, 17, 0, 17, 17, 17, - 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, - 0, 36, 0, 37, 38, 0, 39, 0, 17, 17, - 17, 17, 17, 19, 0, 19, 0, 0, 19, 19, - 19, 0, 19, 19, 19, 19, 19, 19, 19, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 19, 19, 19, 19, 19, 0, 0, - 1, 0, 2, 0, 0, 3, 4, 5, 0, 6, - 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, - 65, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 13, 14, 15, 16, 17, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 0, 0, 0, 0, 0, 0, 65, 65, 65, 65, - 65, 65, 65, 0, 65, 65, 65, 65, 47, 48, + 0, 0, 0, 0, 48, 49, 0, 33, 33, 33, + 0, 0, 0, 33, 0, 37, 155, 38, 39, 2, + 40, 156, 3, 4, 5, 1, 0, 2, 0, 0, + 3, 4, 5, 50, 6, 7, 8, 9, 10, 11, + 12, 80, 82, 41, 157, 60, 60, 13, 52, 53, + 54, 55, 0, 0, 0, 13, 14, 15, 16, 17, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 0, 0, 0, 48, 49, + 0, 60, 60, 60, 60, 60, 60, 60, 0, 60, + 60, 60, 60, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 50, 0, 0, + 0, 75, 75, 37, 0, 38, 39, 0, 40, 48, + 49, 0, 52, 53, 54, 55, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 41, 2, 0, 0, 3, 4, 5, 50, 0, + 0, 0, 0, 0, 0, 75, 75, 75, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 49, 0, 0, - 0, 80, 80, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 51, 52, 53, 54, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 80, 80, 80, 80, + 13, }; const short sudoerscheck[] = - { 100, - 0, 33, 9, 0, 33, 33, 263, 33, 0, 263, - 10, 258, 44, 10, 33, 33, 44, 44, 10, 258, - 33, 10, 11, 33, 263, 44, 44, 257, 258, 0, - 258, 58, 58, 33, 44, 0, 44, 258, 258, 10, - 261, 262, 263, 258, 44, 10, 258, 286, 260, 261, - 259, 263, 0, 61, 44, 33, 286, 43, 43, 45, - 45, 46, 10, 58, 165, 286, 0, 58, 33, 263, - 0, 58, 263, 58, 286, 61, 10, 58, 61, 58, - 10, 61, 293, 294, 295, 296, 297, 298, 299, 33, - 58, 61, 58, 58, 61, 58, 58, 104, 301, 302, - 303, 304, 263, 33, 264, 0, 264, 264, 264, 40, - 61, 44, 44, 263, 61, 10, 44, 44, 41, 108, - 44, 110, 61, 61, 61, 61, 61, 263, 58, 263, - 263, 263, 263, 263, 0, 0, 41, 41, 33, 41, - 0, 41, 41, 146, 89, 60, 106, 50, 41, 138, - 10, 91, 74, 174, 18, 151, 155, 114, 26, 102, - -1, 107, 111, 58, 105, -1, -1, 109, -1, -1, - -1, -1, -1, 33, -1, 0, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 10, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, - 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 10, -1, -1, -1, -1, 257, 258, -1, 257, 258, - -1, 259, 258, 58, -1, 261, 262, 263, -1, -1, - 259, 259, -1, 33, -1, 0, 259, -1, 258, -1, - 260, 261, -1, 263, 286, 10, 256, 286, 258, 256, - 286, 261, 262, 263, 256, 265, 266, 267, 268, 269, - 270, 271, 301, 302, 303, 304, 286, -1, 33, -1, - 258, -1, 0, 261, 262, 263, 286, 287, 288, 289, - 290, 256, 10, 258, -1, -1, 261, 262, 263, -1, - 265, 266, 267, 268, 269, 270, 271, -1, 286, -1, - -1, -1, -1, -1, 258, 33, -1, 0, -1, 263, - -1, 286, 287, 288, 289, 290, 256, 10, 258, -1, - -1, 261, 262, 263, -1, 265, 266, 267, 268, 269, - 270, 271, 286, -1, -1, -1, -1, -1, -1, -1, - 33, -1, 0, -1, -1, -1, 286, 287, 288, 289, - 290, 256, 10, 258, -1, -1, 261, 262, 263, -1, - 265, 266, 267, 268, 269, 270, 271, -1, -1, -1, - -1, -1, -1, -1, -1, 33, -1, 0, -1, -1, - -1, 286, 287, 288, 289, 290, 256, 10, 258, -1, - -1, 261, 262, 263, -1, 265, 266, 267, 268, 269, - 270, 271, -1, -1, -1, -1, -1, -1, -1, -1, - 33, -1, 0, -1, -1, -1, 286, 287, 288, 289, - 290, 256, 10, 258, -1, -1, 261, 262, 263, -1, - 265, 266, 267, 268, 269, 270, 271, -1, -1, -1, - -1, -1, -1, -1, -1, 33, -1, 0, -1, -1, - -1, 286, 287, 288, 289, 290, 256, 10, 258, -1, - -1, 261, 262, 263, -1, 265, 266, 267, 268, 269, - 270, 271, -1, -1, -1, -1, -1, -1, -1, -1, - 33, -1, 0, -1, -1, -1, 286, 287, 288, 289, - 290, 256, 10, 258, -1, -1, 261, 262, 263, -1, - 265, 266, 267, 268, 269, 270, 271, -1, -1, -1, - -1, -1, -1, -1, -1, 33, -1, 0, -1, -1, - -1, 286, 287, 288, 289, 290, -1, 10, 256, -1, - 258, -1, -1, 261, 262, 263, 33, 265, 266, 267, - 268, 269, 270, 271, -1, -1, -1, -1, -1, -1, - 33, -1, -1, -1, -1, -1, -1, -1, 286, 287, - 288, 289, 290, 256, 10, 258, -1, -1, 261, 262, - 263, -1, 265, 266, 267, 268, 269, 270, 271, -1, - -1, -1, -1, -1, -1, -1, -1, 33, -1, -1, - -1, -1, -1, 286, 287, 288, 289, 290, 256, -1, - 258, -1, -1, 261, 262, 263, 33, 265, 266, 267, - 268, 269, 270, 271, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 286, 287, - 288, 289, 290, 256, -1, 258, -1, -1, 261, 262, - 263, -1, 265, 266, 267, 268, 269, 270, 271, -1, - -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, - -1, -1, -1, 286, 287, 288, 289, 290, 256, -1, - 258, -1, -1, 261, 262, 263, -1, 265, 266, 267, - 268, 269, 270, 271, -1, -1, -1, 33, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 286, 287, - 288, 289, 290, 256, -1, 258, -1, -1, 261, 262, - 263, -1, 265, 266, 267, 268, 269, 270, 271, -1, + { 10, + 33, 33, 33, 33, 9, 0, 0, 33, 100, 263, + 33, 33, 44, 44, 33, 10, 10, 44, 44, 10, + 11, 44, 33, 0, 31, 32, 0, 263, 258, 36, + 0, 58, 0, 10, 0, 0, 10, 0, 0, 58, + 10, 33, 10, 0, 10, 10, 44, 10, 10, 257, + 258, 0, 258, 10, 0, 258, 63, 0, 0, 66, + 263, 10, 69, 61, 10, 72, 258, 10, 10, 258, + 58, 78, 259, 80, 33, 82, 58, 58, 286, 58, + 172, 58, 263, 286, 58, 92, 93, 94, 58, 61, + 58, 263, 58, 58, 101, 58, 58, 61, 44, 104, + 258, 58, 44, 261, 262, 263, 61, 33, 33, 58, + 61, 258, 263, 260, 261, 33, 263, 40, 264, 110, + 264, 264, 113, 43, 264, 45, 44, 44, 286, 46, + 47, 301, 302, 303, 304, 44, 44, 33, 44, 286, + 44, 61, 59, 293, 294, 295, 296, 297, 298, 299, + 41, 44, 263, 263, 145, 263, 61, 263, 61, 61, + 61, 61, 61, 61, 263, 263, 263, 0, 0, 41, + 41, 41, 41, 41, 88, 153, 51, 61, 107, 42, + 91, 75, 18, 158, 181, 118, 162, 102, 26, 105, + 114, -1, 111, -1, -1, 108, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 286, 287, 288, 289, 290, 256, -1, - 258, -1, -1, 261, 262, 263, -1, 265, 266, 267, - 268, 269, 270, 271, -1, -1, -1, -1, -1, -1, - -1, 258, -1, 260, 261, -1, 263, -1, 286, 287, - 288, 289, 290, 256, -1, 258, -1, -1, 261, 262, - 263, -1, 265, 266, 267, 268, 269, 270, 271, 286, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 286, 287, 288, 289, 290, -1, -1, - 256, -1, 258, -1, -1, 261, 262, 263, -1, 265, - 266, 267, 268, 269, 270, 271, -1, -1, -1, -1, - 257, 258, -1, -1, -1, -1, -1, -1, -1, -1, - 286, 287, 288, 289, 290, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - -1, -1, -1, -1, -1, -1, 293, 294, 295, 296, - 297, 298, 299, -1, 301, 302, 303, 304, 257, 258, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 272, 273, 274, 275, 276, 277, 278, + -1, -1, -1, -1, 257, 258, -1, 259, 259, 259, + -1, -1, -1, 259, -1, 258, 258, 260, 261, 258, + 263, 263, 261, 262, 263, 256, -1, 258, -1, -1, + 261, 262, 263, 286, 265, 266, 267, 268, 269, 270, + 271, 256, 256, 286, 286, 257, 258, 286, 301, 302, + 303, 304, -1, -1, -1, 286, 287, 288, 289, 290, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, -1, -1, -1, 257, 258, + -1, 293, 294, 295, 296, 297, 298, 299, -1, 301, + 302, 303, 304, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, -1, -1, - -1, 257, 258, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 301, 302, 303, 304, 272, 273, 274, 275, + -1, 257, 258, 258, -1, 260, 261, -1, 263, 257, + 258, -1, 301, 302, 303, 304, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 301, 302, 303, 304, + 286, 286, 258, -1, -1, 261, 262, 263, 286, -1, + -1, -1, -1, -1, -1, 301, 302, 303, 304, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 286, }; #define YYFINAL 20 #ifndef YYDEBUG @@ -533,28 +422,23 @@ const char * const sudoersrule[] = "line : entry", "line : line entry", "entry : '\\n'", -"entry : error '\\n'", -"entry : error END", +"entry : error eol", "entry : include", "entry : includedir", -"entry : userlist privileges", -"entry : USERALIAS useraliases", -"entry : HOSTALIAS hostaliases", -"entry : CMNDALIAS cmndaliases", -"entry : RUNASALIAS runasaliases", -"entry : DEFAULTS defaults_list", -"entry : DEFAULTS_USER userlist defaults_list", -"entry : DEFAULTS_RUNAS userlist defaults_list", -"entry : DEFAULTS_HOST hostlist defaults_list", -"entry : DEFAULTS_CMND cmndlist defaults_list", -"include : INCLUDE WORD '\\n'", -"include : INCLUDE WORD error '\\n'", -"include : INCLUDE WORD END", -"include : INCLUDE WORD error END", -"includedir : INCLUDEDIR WORD '\\n'", -"includedir : INCLUDEDIR WORD error '\\n'", -"includedir : INCLUDEDIR WORD END", -"includedir : INCLUDEDIR WORD error END", +"entry : userlist privileges eol", +"entry : USERALIAS useraliases eol", +"entry : HOSTALIAS hostaliases eol", +"entry : CMNDALIAS cmndaliases eol", +"entry : RUNASALIAS runasaliases eol", +"entry : DEFAULTS defaults_list eol", +"entry : DEFAULTS_USER userlist defaults_list eol", +"entry : DEFAULTS_RUNAS userlist defaults_list eol", +"entry : DEFAULTS_HOST hostlist defaults_list eol", +"entry : DEFAULTS_CMND cmndlist defaults_list eol", +"include : INCLUDE WORD eol", +"include : INCLUDE WORD error eol", +"includedir : INCLUDEDIR WORD eol", +"includedir : INCLUDEDIR WORD error eol", "defaults_list : defaults_entry", "defaults_list : defaults_list ',' defaults_entry", "defaults_entry : DEFVAR", @@ -657,6 +541,8 @@ const char * const sudoersrule[] = "group : ALIAS", "group : ALL", "group : WORD", +"eol : '\\n'", +"eol : END", }; #endif #ifdef YYSTACKSIZE @@ -685,7 +571,7 @@ short *yysslim; YYSTYPE *yyvs; unsigned int yystacksize; int yyparse(void); -#line 977 "gram.y" +#line 970 "gram.y" void sudoerserror(const char *s) { @@ -1158,7 +1044,7 @@ init_options(struct command_options *opts) opts->limitprivs = NULL; #endif } -#line 1148 "gram.c" +#line 1034 "gram.c" /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(void) { @@ -1350,28 +1236,24 @@ yyreduce: { case 1: #line 182 "gram.y" -{ ; } +{ + ; /* empty file */ + } break; case 5: -#line 190 "gram.y" +#line 192 "gram.y" { - ; + ; /* blank line */ } break; case 6: -#line 193 "gram.y" +#line 195 "gram.y" { yyerrok; } break; case 7: -#line 196 "gram.y" -{ - yyerrok; - } -break; -case 8: -#line 199 "gram.y" +#line 198 "gram.y" { if (!push_include(yyvsp[0].string, false)) { free(yyvsp[0].string); @@ -1380,8 +1262,8 @@ case 8: free(yyvsp[0].string); } break; -case 9: -#line 206 "gram.y" +case 8: +#line 205 "gram.y" { if (!push_include(yyvsp[0].string, true)) { free(yyvsp[0].string); @@ -1390,135 +1272,109 @@ case 9: free(yyvsp[0].string); } break; -case 10: -#line 213 "gram.y" +case 9: +#line 212 "gram.y" { - if (!add_userspec(yyvsp[-1].member, yyvsp[0].privilege)) { + if (!add_userspec(yyvsp[-2].member, yyvsp[-1].privilege)) { sudoerserror(N_("unable to allocate memory")); YYERROR; } } break; +case 10: +#line 218 "gram.y" +{ + ; + } +break; case 11: -#line 219 "gram.y" +#line 221 "gram.y" { ; } break; case 12: -#line 222 "gram.y" +#line 224 "gram.y" { ; } break; case 13: -#line 225 "gram.y" +#line 227 "gram.y" { ; } break; case 14: -#line 228 "gram.y" +#line 230 "gram.y" { - ; + if (!add_defaults(DEFAULTS, NULL, yyvsp[-1].defaults)) + YYERROR; } break; case 15: -#line 231 "gram.y" +#line 234 "gram.y" { - if (!add_defaults(DEFAULTS, NULL, yyvsp[0].defaults)) + if (!add_defaults(DEFAULTS_USER, yyvsp[-2].member, yyvsp[-1].defaults)) YYERROR; } break; case 16: -#line 235 "gram.y" +#line 238 "gram.y" { - if (!add_defaults(DEFAULTS_USER, yyvsp[-1].member, yyvsp[0].defaults)) + if (!add_defaults(DEFAULTS_RUNAS, yyvsp[-2].member, yyvsp[-1].defaults)) YYERROR; } break; case 17: -#line 239 "gram.y" +#line 242 "gram.y" { - if (!add_defaults(DEFAULTS_RUNAS, yyvsp[-1].member, yyvsp[0].defaults)) + if (!add_defaults(DEFAULTS_HOST, yyvsp[-2].member, yyvsp[-1].defaults)) YYERROR; } break; case 18: -#line 243 "gram.y" +#line 246 "gram.y" { - if (!add_defaults(DEFAULTS_HOST, yyvsp[-1].member, yyvsp[0].defaults)) + if (!add_defaults(DEFAULTS_CMND, yyvsp[-2].member, yyvsp[-1].defaults)) YYERROR; } break; case 19: -#line 247 "gram.y" -{ - if (!add_defaults(DEFAULTS_CMND, yyvsp[-1].member, yyvsp[0].defaults)) - YYERROR; - } -break; -case 20: -#line 253 "gram.y" +#line 252 "gram.y" { yyval.string = yyvsp[-1].string; } break; -case 21: -#line 256 "gram.y" +case 20: +#line 255 "gram.y" { yyerrok; yyval.string = yyvsp[-2].string; } break; -case 22: -#line 260 "gram.y" +case 21: +#line 261 "gram.y" { yyval.string = yyvsp[-1].string; } break; -case 23: -#line 263 "gram.y" +case 22: +#line 264 "gram.y" { yyerrok; yyval.string = yyvsp[-2].string; } break; case 24: -#line 269 "gram.y" -{ - yyval.string = yyvsp[-1].string; - } -break; -case 25: -#line 272 "gram.y" -{ - yyerrok; - yyval.string = yyvsp[-2].string; - } -break; -case 26: -#line 276 "gram.y" -{ - yyval.string = yyvsp[-1].string; - } -break; -case 27: -#line 279 "gram.y" -{ - yyerrok; - yyval.string = yyvsp[-2].string; - } -break; -case 29: -#line 286 "gram.y" +#line 271 "gram.y" { HLTQ_CONCAT(yyvsp[-2].defaults, yyvsp[0].defaults, entries); yyval.defaults = yyvsp[-2].defaults; } break; -case 30: -#line 292 "gram.y" +case 25: +#line 277 "gram.y" { yyval.defaults = new_default(yyvsp[0].string, NULL, true); if (yyval.defaults == NULL) { @@ -1527,8 +1383,8 @@ case 30: } } break; -case 31: -#line 299 "gram.y" +case 26: +#line 284 "gram.y" { yyval.defaults = new_default(yyvsp[0].string, NULL, false); if (yyval.defaults == NULL) { @@ -1537,8 +1393,8 @@ case 31: } } break; -case 32: -#line 306 "gram.y" +case 27: +#line 291 "gram.y" { yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, true); if (yyval.defaults == NULL) { @@ -1547,8 +1403,8 @@ case 32: } } break; -case 33: -#line 313 "gram.y" +case 28: +#line 298 "gram.y" { yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '+'); if (yyval.defaults == NULL) { @@ -1557,8 +1413,8 @@ case 33: } } break; -case 34: -#line 320 "gram.y" +case 29: +#line 305 "gram.y" { yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '-'); if (yyval.defaults == NULL) { @@ -1567,15 +1423,15 @@ case 34: } } break; -case 36: -#line 330 "gram.y" +case 31: +#line 315 "gram.y" { HLTQ_CONCAT(yyvsp[-2].privilege, yyvsp[0].privilege, entries); yyval.privilege = yyvsp[-2].privilege; } break; -case 37: -#line 336 "gram.y" +case 32: +#line 321 "gram.y" { struct privilege *p = calloc(1, sizeof(*p)); if (p == NULL) { @@ -1589,22 +1445,22 @@ case 37: yyval.privilege = p; } break; -case 38: -#line 350 "gram.y" +case 33: +#line 335 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = false; } break; -case 39: -#line 354 "gram.y" +case 34: +#line 339 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = true; } break; -case 40: -#line 360 "gram.y" +case 35: +#line 345 "gram.y" { yyval.member = new_member(yyvsp[0].string, ALIAS); if (yyval.member == NULL) { @@ -1613,8 +1469,8 @@ case 40: } } break; -case 41: -#line 367 "gram.y" +case 36: +#line 352 "gram.y" { yyval.member = new_member(NULL, ALL); if (yyval.member == NULL) { @@ -1623,8 +1479,8 @@ case 41: } } break; -case 42: -#line 374 "gram.y" +case 37: +#line 359 "gram.y" { yyval.member = new_member(yyvsp[0].string, NETGROUP); if (yyval.member == NULL) { @@ -1633,8 +1489,8 @@ case 42: } } break; -case 43: -#line 381 "gram.y" +case 38: +#line 366 "gram.y" { yyval.member = new_member(yyvsp[0].string, NTWKADDR); if (yyval.member == NULL) { @@ -1643,8 +1499,8 @@ case 43: } } break; -case 44: -#line 388 "gram.y" +case 39: +#line 373 "gram.y" { yyval.member = new_member(yyvsp[0].string, WORD); if (yyval.member == NULL) { @@ -1653,8 +1509,8 @@ case 44: } } break; -case 46: -#line 398 "gram.y" +case 41: +#line 383 "gram.y" { struct cmndspec *prev; prev = HLTQ_LAST(yyvsp[-2].cmndspec, cmndspec, entries); @@ -1707,8 +1563,8 @@ case 46: yyval.cmndspec = yyvsp[-2].cmndspec; } break; -case 47: -#line 451 "gram.y" +case 42: +#line 436 "gram.y" { struct cmndspec *cs = calloc(1, sizeof(*cs)); if (cs == NULL) { @@ -1761,8 +1617,8 @@ case 47: yyval.cmndspec = cs; } break; -case 48: -#line 504 "gram.y" +case 43: +#line 489 "gram.y" { yyval.digest = new_digest(SUDO_DIGEST_SHA224, yyvsp[0].string); if (yyval.digest == NULL) { @@ -1771,8 +1627,8 @@ case 48: } } break; -case 49: -#line 511 "gram.y" +case 44: +#line 496 "gram.y" { yyval.digest = new_digest(SUDO_DIGEST_SHA256, yyvsp[0].string); if (yyval.digest == NULL) { @@ -1781,8 +1637,8 @@ case 49: } } break; -case 50: -#line 518 "gram.y" +case 45: +#line 503 "gram.y" { yyval.digest = new_digest(SUDO_DIGEST_SHA384, yyvsp[0].string); if (yyval.digest == NULL) { @@ -1791,8 +1647,8 @@ case 50: } } break; -case 51: -#line 525 "gram.y" +case 46: +#line 510 "gram.y" { yyval.digest = new_digest(SUDO_DIGEST_SHA512, yyvsp[0].string); if (yyval.digest == NULL) { @@ -1801,21 +1657,21 @@ case 51: } } break; -case 53: -#line 535 "gram.y" +case 48: +#line 520 "gram.y" { HLTQ_CONCAT(yyvsp[-2].digest, yyvsp[0].digest, entries); yyval.digest = yyvsp[-2].digest; } break; -case 54: -#line 541 "gram.y" +case 49: +#line 526 "gram.y" { yyval.member = yyvsp[0].member; } break; -case 55: -#line 544 "gram.y" +case 50: +#line 529 "gram.y" { struct sudo_command *c = (struct sudo_command *) yyvsp[0].member->name; @@ -1836,76 +1692,76 @@ case 55: yyval.member = yyvsp[0].member; } break; -case 56: -#line 565 "gram.y" +case 51: +#line 550 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = false; } break; -case 57: -#line 569 "gram.y" +case 52: +#line 554 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = true; } break; +case 53: +#line 560 "gram.y" +{ + yyval.string = yyvsp[0].string; + } +break; +case 54: +#line 565 "gram.y" +{ + yyval.string = yyvsp[0].string; + } +break; +case 55: +#line 569 "gram.y" +{ + yyval.string = yyvsp[0].string; + } +break; +case 56: +#line 574 "gram.y" +{ + yyval.string = yyvsp[0].string; + } +break; +case 57: +#line 579 "gram.y" +{ + yyval.string = yyvsp[0].string; + } +break; case 58: -#line 575 "gram.y" -{ - yyval.string = yyvsp[0].string; - } -break; -case 59: -#line 580 "gram.y" -{ - yyval.string = yyvsp[0].string; - } -break; -case 60: #line 584 "gram.y" { yyval.string = yyvsp[0].string; } break; -case 61: -#line 589 "gram.y" +case 59: +#line 588 "gram.y" { yyval.string = yyvsp[0].string; } break; -case 62: -#line 594 "gram.y" -{ - yyval.string = yyvsp[0].string; - } -break; -case 63: -#line 599 "gram.y" -{ - yyval.string = yyvsp[0].string; - } -break; -case 64: -#line 603 "gram.y" -{ - yyval.string = yyvsp[0].string; - } -break; -case 65: -#line 608 "gram.y" +case 60: +#line 593 "gram.y" { yyval.runas = NULL; } break; -case 66: -#line 611 "gram.y" +case 61: +#line 596 "gram.y" { yyval.runas = yyvsp[-1].runas; } break; -case 67: -#line 616 "gram.y" +case 62: +#line 601 "gram.y" { yyval.runas = calloc(1, sizeof(struct runascontainer)); if (yyval.runas != NULL) { @@ -1922,8 +1778,8 @@ case 67: } } break; -case 68: -#line 631 "gram.y" +case 63: +#line 616 "gram.y" { yyval.runas = calloc(1, sizeof(struct runascontainer)); if (yyval.runas == NULL) { @@ -1934,8 +1790,8 @@ case 68: /* $$->runasgroups = NULL; */ } break; -case 69: -#line 640 "gram.y" +case 64: +#line 625 "gram.y" { yyval.runas = calloc(1, sizeof(struct runascontainer)); if (yyval.runas == NULL) { @@ -1946,8 +1802,8 @@ case 69: yyval.runas->runasgroups = yyvsp[0].member; } break; -case 70: -#line 649 "gram.y" +case 65: +#line 634 "gram.y" { yyval.runas = calloc(1, sizeof(struct runascontainer)); if (yyval.runas == NULL) { @@ -1958,8 +1814,8 @@ case 70: yyval.runas->runasgroups = yyvsp[0].member; } break; -case 71: -#line 658 "gram.y" +case 66: +#line 643 "gram.y" { yyval.runas = calloc(1, sizeof(struct runascontainer)); if (yyval.runas != NULL) { @@ -1976,14 +1832,14 @@ case 71: } } break; -case 72: -#line 675 "gram.y" +case 67: +#line 660 "gram.y" { init_options(&yyval.options); } break; -case 73: -#line 678 "gram.y" +case 68: +#line 663 "gram.y" { yyval.options.notbefore = parse_gentime(yyvsp[0].string); free(yyvsp[0].string); @@ -1993,8 +1849,8 @@ case 73: } } break; -case 74: -#line 686 "gram.y" +case 69: +#line 671 "gram.y" { yyval.options.notafter = parse_gentime(yyvsp[0].string); free(yyvsp[0].string); @@ -2004,8 +1860,8 @@ case 74: } } break; -case 75: -#line 694 "gram.y" +case 70: +#line 679 "gram.y" { yyval.options.timeout = parse_timeout(yyvsp[0].string); free(yyvsp[0].string); @@ -2018,8 +1874,8 @@ case 75: } } break; -case 76: -#line 705 "gram.y" +case 71: +#line 690 "gram.y" { #ifdef HAVE_SELINUX free(yyval.options.role); @@ -2027,8 +1883,8 @@ case 76: #endif } break; -case 77: -#line 711 "gram.y" +case 72: +#line 696 "gram.y" { #ifdef HAVE_SELINUX free(yyval.options.type); @@ -2036,8 +1892,8 @@ case 77: #endif } break; -case 78: -#line 717 "gram.y" +case 73: +#line 702 "gram.y" { #ifdef HAVE_PRIV_SET free(yyval.options.privs); @@ -2045,8 +1901,8 @@ case 78: #endif } break; -case 79: -#line 723 "gram.y" +case 74: +#line 708 "gram.y" { #ifdef HAVE_PRIV_SET free(yyval.options.limitprivs); @@ -2054,98 +1910,98 @@ case 79: #endif } break; +case 75: +#line 716 "gram.y" +{ + TAGS_INIT(yyval.tag); + } +break; +case 76: +#line 719 "gram.y" +{ + yyval.tag.nopasswd = true; + } +break; +case 77: +#line 722 "gram.y" +{ + yyval.tag.nopasswd = false; + } +break; +case 78: +#line 725 "gram.y" +{ + yyval.tag.noexec = true; + } +break; +case 79: +#line 728 "gram.y" +{ + yyval.tag.noexec = false; + } +break; case 80: #line 731 "gram.y" { - TAGS_INIT(yyval.tag); + yyval.tag.setenv = true; } break; case 81: #line 734 "gram.y" { - yyval.tag.nopasswd = true; + yyval.tag.setenv = false; } break; case 82: #line 737 "gram.y" { - yyval.tag.nopasswd = false; + yyval.tag.log_input = true; } break; case 83: #line 740 "gram.y" { - yyval.tag.noexec = true; + yyval.tag.log_input = false; } break; case 84: #line 743 "gram.y" { - yyval.tag.noexec = false; + yyval.tag.log_output = true; } break; case 85: #line 746 "gram.y" { - yyval.tag.setenv = true; + yyval.tag.log_output = false; } break; case 86: #line 749 "gram.y" { - yyval.tag.setenv = false; + yyval.tag.follow = true; } break; case 87: #line 752 "gram.y" { - yyval.tag.log_input = true; + yyval.tag.follow = false; } break; case 88: #line 755 "gram.y" { - yyval.tag.log_input = false; + yyval.tag.send_mail = true; } break; case 89: #line 758 "gram.y" -{ - yyval.tag.log_output = true; - } -break; -case 90: -#line 761 "gram.y" -{ - yyval.tag.log_output = false; - } -break; -case 91: -#line 764 "gram.y" -{ - yyval.tag.follow = true; - } -break; -case 92: -#line 767 "gram.y" -{ - yyval.tag.follow = false; - } -break; -case 93: -#line 770 "gram.y" -{ - yyval.tag.send_mail = true; - } -break; -case 94: -#line 773 "gram.y" { yyval.tag.send_mail = false; } break; -case 95: -#line 778 "gram.y" +case 90: +#line 763 "gram.y" { yyval.member = new_member(NULL, ALL); if (yyval.member == NULL) { @@ -2154,8 +2010,8 @@ case 95: } } break; -case 96: -#line 785 "gram.y" +case 91: +#line 770 "gram.y" { yyval.member = new_member(yyvsp[0].string, ALIAS); if (yyval.member == NULL) { @@ -2164,8 +2020,8 @@ case 96: } } break; -case 97: -#line 792 "gram.y" +case 92: +#line 777 "gram.y" { struct sudo_command *c; @@ -2181,8 +2037,8 @@ case 97: } } break; -case 100: -#line 812 "gram.y" +case 95: +#line 797 "gram.y" { const char *s; s = alias_add(&parsed_policy, yyvsp[-2].string, HOSTALIAS, @@ -2193,15 +2049,15 @@ case 100: } } break; -case 102: -#line 824 "gram.y" +case 97: +#line 809 "gram.y" { HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries); yyval.member = yyvsp[-2].member; } break; -case 105: -#line 834 "gram.y" +case 100: +#line 819 "gram.y" { const char *s; s = alias_add(&parsed_policy, yyvsp[-2].string, CMNDALIAS, @@ -2212,15 +2068,15 @@ case 105: } } break; -case 107: -#line 846 "gram.y" +case 102: +#line 831 "gram.y" { HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries); yyval.member = yyvsp[-2].member; } break; -case 110: -#line 856 "gram.y" +case 105: +#line 841 "gram.y" { const char *s; s = alias_add(&parsed_policy, yyvsp[-2].string, RUNASALIAS, @@ -2231,8 +2087,8 @@ case 110: } } break; -case 113: -#line 871 "gram.y" +case 108: +#line 856 "gram.y" { const char *s; s = alias_add(&parsed_policy, yyvsp[-2].string, USERALIAS, @@ -2243,29 +2099,29 @@ case 113: } } break; -case 115: -#line 883 "gram.y" +case 110: +#line 868 "gram.y" { HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries); yyval.member = yyvsp[-2].member; } break; -case 116: -#line 889 "gram.y" +case 111: +#line 874 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = false; } break; -case 117: -#line 893 "gram.y" +case 112: +#line 878 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = true; } break; -case 118: -#line 899 "gram.y" +case 113: +#line 884 "gram.y" { yyval.member = new_member(yyvsp[0].string, ALIAS); if (yyval.member == NULL) { @@ -2274,8 +2130,8 @@ case 118: } } break; -case 119: -#line 906 "gram.y" +case 114: +#line 891 "gram.y" { yyval.member = new_member(NULL, ALL); if (yyval.member == NULL) { @@ -2284,8 +2140,8 @@ case 119: } } break; -case 120: -#line 913 "gram.y" +case 115: +#line 898 "gram.y" { yyval.member = new_member(yyvsp[0].string, NETGROUP); if (yyval.member == NULL) { @@ -2294,8 +2150,8 @@ case 120: } } break; -case 121: -#line 920 "gram.y" +case 116: +#line 905 "gram.y" { yyval.member = new_member(yyvsp[0].string, USERGROUP); if (yyval.member == NULL) { @@ -2304,8 +2160,8 @@ case 121: } } break; -case 122: -#line 927 "gram.y" +case 117: +#line 912 "gram.y" { yyval.member = new_member(yyvsp[0].string, WORD); if (yyval.member == NULL) { @@ -2314,29 +2170,29 @@ case 122: } } break; -case 124: -#line 937 "gram.y" +case 119: +#line 922 "gram.y" { HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries); yyval.member = yyvsp[-2].member; } break; -case 125: -#line 943 "gram.y" +case 120: +#line 928 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = false; } break; -case 126: -#line 947 "gram.y" +case 121: +#line 932 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = true; } break; -case 127: -#line 953 "gram.y" +case 122: +#line 938 "gram.y" { yyval.member = new_member(yyvsp[0].string, ALIAS); if (yyval.member == NULL) { @@ -2345,8 +2201,8 @@ case 127: } } break; -case 128: -#line 960 "gram.y" +case 123: +#line 945 "gram.y" { yyval.member = new_member(NULL, ALL); if (yyval.member == NULL) { @@ -2355,8 +2211,8 @@ case 128: } } break; -case 129: -#line 967 "gram.y" +case 124: +#line 952 "gram.y" { yyval.member = new_member(yyvsp[0].string, WORD); if (yyval.member == NULL) { @@ -2365,7 +2221,19 @@ case 129: } } break; -#line 2355 "gram.c" +case 125: +#line 961 "gram.y" +{ + ; + } +break; +case 126: +#line 964 "gram.y" +{ + ; /* EOF */ + } +break; +#line 2223 "gram.c" } yyssp -= yym; yystate = *yyssp; diff --git a/plugins/sudoers/gram.y b/plugins/sudoers/gram.y index aa749c741..bf50bfcc0 100644 --- a/plugins/sudoers/gram.y +++ b/plugins/sudoers/gram.y @@ -179,7 +179,9 @@ static struct command_digest *new_digest(int, char *); %% -file : { ; } +file : { + ; /* empty file */ + } | line ; @@ -188,12 +190,9 @@ line : entry ; entry : '\n' { - ; + ; /* blank line */ } - | error '\n' { - yyerrok; - } - | error END { + | error eol { yyerrok; } | include { @@ -210,73 +209,59 @@ entry : '\n' { } free($1); } - | userlist privileges { + | userlist privileges eol { if (!add_userspec($1, $2)) { sudoerserror(N_("unable to allocate memory")); YYERROR; } } - | USERALIAS useraliases { + | USERALIAS useraliases eol { ; } - | HOSTALIAS hostaliases { + | HOSTALIAS hostaliases eol { ; } - | CMNDALIAS cmndaliases { + | CMNDALIAS cmndaliases eol { ; } - | RUNASALIAS runasaliases { + | RUNASALIAS runasaliases eol { ; } - | DEFAULTS defaults_list { + | DEFAULTS defaults_list eol { if (!add_defaults(DEFAULTS, NULL, $2)) YYERROR; } - | DEFAULTS_USER userlist defaults_list { + | DEFAULTS_USER userlist defaults_list eol { if (!add_defaults(DEFAULTS_USER, $2, $3)) YYERROR; } - | DEFAULTS_RUNAS userlist defaults_list { + | DEFAULTS_RUNAS userlist defaults_list eol { if (!add_defaults(DEFAULTS_RUNAS, $2, $3)) YYERROR; } - | DEFAULTS_HOST hostlist defaults_list { + | DEFAULTS_HOST hostlist defaults_list eol { if (!add_defaults(DEFAULTS_HOST, $2, $3)) YYERROR; } - | DEFAULTS_CMND cmndlist defaults_list { + | DEFAULTS_CMND cmndlist defaults_list eol { if (!add_defaults(DEFAULTS_CMND, $2, $3)) YYERROR; } ; -include : INCLUDE WORD '\n' { +include : INCLUDE WORD eol { $$ = $2; } - | INCLUDE WORD error '\n' { - yyerrok; - $$ = $2; - } - | INCLUDE WORD END { - $$ = $2; - } - | INCLUDE WORD error END { + | INCLUDE WORD error eol { yyerrok; $$ = $2; } ; -includedir : INCLUDEDIR WORD '\n' { +includedir : INCLUDEDIR WORD eol { $$ = $2; } - | INCLUDEDIR WORD error '\n' { - yyerrok; - $$ = $2; - } - | INCLUDEDIR WORD END { - $$ = $2; - } - | INCLUDEDIR WORD error END { + | INCLUDEDIR WORD error eol { yyerrok; $$ = $2; } @@ -973,6 +958,14 @@ group : ALIAS { } ; +eol : '\n' { + ; + } + | END { + ; /* EOF */ + } + ; + %% void sudoerserror(const char *s) diff --git a/plugins/sudoers/regress/sudoers/test5.toke.ok b/plugins/sudoers/regress/sudoers/test5.toke.ok index caed66b32..fb8152f4f 100644 --- a/plugins/sudoers/regress/sudoers/test5.toke.ok +++ b/plugins/sudoers/regress/sudoers/test5.toke.ok @@ -1,3 +1,3 @@ # USERALIAS ALIAS = BEGINSTR ENDSTR <*> ERROR -BEGINSTR ENDSTR ERROR <*> ALL = ALL +BEGINSTR ENDSTR <*> ERROR ALL = ALL