--- embedaddon/sudo/plugins/sudoers/toke.c 2012/02/21 16:23:02 1.1 +++ embedaddon/sudo/plugins/sudoers/toke.c 2012/05/29 12:26:49 1.1.1.2 @@ -4,7 +4,7 @@ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /usr/local/www/users/anoncvs/cvs/embedaddon/sudo/plugins/sudoers/toke.c,v 1.1 2012/02/21 16:23:02 misho Exp $ + * $Header: /usr/local/www/users/anoncvs/cvs/embedaddon/sudo/plugins/sudoers/toke.c,v 1.1.1.2 2012/05/29 12:26:49 misho Exp $ */ #define FLEX_SCANNER @@ -349,15 +349,15 @@ static yyconst short int yy_accept[607] = 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 0, 30, 42, 42, 42, 0, 0, 0, - 21, 20, 0, 0, 0, 0, 0, 20, 0, 47, - 47, 47, 0, 0, 0, 37, 37, 37, 37, 37, + 18, 0, 21, 20, 0, 0, 0, 0, 0, 20, + 0, 47, 47, 47, 0, 0, 0, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 0, 28, 42, 42, 21, 0, 18, + 37, 37, 37, 37, 37, 0, 28, 42, 42, 21, 0, 0, 20, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 37, 37, 37, 37, 37, 37, 37, 37, 0, 31, 42, 0, 47, 47, 47, 37, 37, - 37, 37, 37, 37, 0, 29, 0, 47, 47, 47, - 47, 47, 37, 37, 37, 37, 37, 0, 19, 35, + 37, 37, 37, 37, 0, 29, 0, 0, 19, 47, + 47, 47, 47, 47, 37, 37, 37, 37, 37, 35, 35, 35, 35, 35, 35, 0 } ; @@ -435,51 +435,51 @@ static yyconst short int yy_base[671] = 489, 2223, 2213, 2198, 2211, 2198, 420, 407, 529, 490, 491, 1263, 1299, 1335, 2235, 2234, 839, 2234, 2232, 2228, 2226, 528, 848, 657, 856, 665, 1371, 0, 877, 1382, - 886, 894, 1424, 913, 570, 3665, 2208, 2197, 2198, 2177, - 2184, 2193, 2190, 2169, 558, 2145, 2098, 2099, 648, 626, - 530, 559, 923, 336, 1467, 1503, 964, 2138, 2137, 2108, - 2086, 1537, 551, 1000, 1041, 1082, 653, 694, 797, 1049, + 886, 894, 1424, 913, 570, 3665, 2208, 2197, 2201, 2178, + 2185, 2194, 2194, 2176, 558, 2169, 2152, 2150, 648, 626, + 530, 559, 923, 336, 1467, 1503, 964, 2171, 2140, 2139, + 2138, 1537, 551, 1000, 1041, 1082, 653, 694, 797, 1049, - 923, 1580, 0, 1116, 1591, 1090, 1008, 1633, 1125, 2069, - 2065, 747, 686, 2046, 2005, 786, 926, 905, 2014, 1982, - 679, 634, 544, 915, 1675, 1710, 1745, 2015, 1978, 1962, - 1150, 1781, 1158, 1133, 1822, 1197, 1166, 1954, 1239, 1273, + 923, 1580, 0, 1116, 1591, 1090, 1008, 1633, 1125, 2121, + 2082, 747, 686, 2064, 2071, 786, 926, 905, 2080, 2033, + 679, 634, 544, 915, 1675, 1710, 1745, 2052, 2043, 2033, + 1150, 1781, 1158, 1133, 1822, 1197, 1166, 2028, 1239, 1273, 1207, 950, 951, 962, 991, 1247, 1073, 1865, 0, 1283, - 1876, 1307, 1315, 1918, 1323, 1923, 1923, 1188, 3665, 1924, - 1898, 1893, 1873, 1286, 3665, 1336, 3665, 707, 1790, 1783, - 786, 930, 764, 1298, 1358, 1041, 1960, 1995, 1400, 1823, - 1799, 1348, 708, 1406, 1348, 2031, 0, 559, 2042, 1441, + 1876, 1307, 1315, 1918, 1323, 1987, 1968, 1188, 3665, 1967, + 1951, 1929, 1913, 1286, 3665, 1336, 3665, 707, 1897, 1889, + 786, 930, 764, 1298, 1358, 1041, 1960, 1995, 1400, 1927, + 1879, 1348, 708, 1406, 1348, 2031, 0, 559, 2042, 1441, 1449, 2083, 1477, 1487, 1513, 1523, 1230, 1290, 1458, 1548, - 1557, 1602, 2126, 0, 1613, 2137, 1650, 1565, 1660, 1765, - 1763, 1680, 1675, 1359, 1406, 1626, 1601, 1577, 897, 938, + 1557, 1602, 2126, 0, 1613, 2137, 1650, 1565, 1660, 1806, + 1779, 1680, 1675, 1359, 1406, 1626, 1601, 1577, 897, 938, 1695, 1589, 2180, 2216, 2252, 2288, 1611, 1686, 1720, 1731, 1563, 1478, 1504, 1694, 1524, 2324, 0, 617, 2335, 1753, 1761, 2376, 1769, 1798, 1550, 1808, 1841, 1851, 1335, 1358, - 1887, 714, 825, 2419, 0, 926, 1407, 1508, 1506, 1471, - 1547, 3665, 1616, 3665, 1423, 1731, 1907, 1512, 1575, 1910, - 1915, 1935, 1498, 2429, 2465, 1971, 1611, 1977, 1457, 2005, - 2015, 1987, 1408, 1254, 1732, 1782, 2059, 1842, 2501, 0, - 1025, 2512, 2067, 2100, 2553, 2108, 2155, 2164, 2189, 1769, + 1887, 714, 825, 2419, 0, 926, 1407, 1468, 1430, 1431, + 1547, 3665, 1616, 3665, 1381, 1731, 1045, 1512, 1575, 1908, + 1913, 1970, 1498, 2429, 2465, 1947, 1611, 1981, 1264, 2006, + 2016, 2061, 1198, 1181, 1732, 1782, 2067, 1842, 2501, 0, + 1181, 2512, 2100, 1904, 2553, 2110, 2155, 2164, 2189, 1769, - 1207, 1189, 1634, 3665, 1699, 1162, 1113, 1074, 1118, 384, - 1040, 2211, 2218, 2238, 2243, 2263, 2288, 2249, 2307, 2596, - 2632, 2668, 2304, 2354, 2395, 1025, 1006, 1889, 2016, 2362, - 2043, 2704, 0, 1224, 2715, 2403, 2437, 2445, 992, 2454, - 2474, 2483, 903, 1921, 3665, 1941, 839, 3665, 843, 3665, - 1306, 2489, 2529, 2537, 1911, 2758, 2794, 2573, 2579, 811, - 2607, 2617, 2642, 640, 629, 2109, 535, 447, 2650, 0, - 1428, 1942, 3665, 2044, 2216, 2830, 2866, 2902, 2676, 2684, - 2692, 337, 0, 333, 2067, 3665, 327, 2733, 1912, 2938, - 2974, 2743, 3665, 2767, 2777, 2658, 3665, 166, 3665, 2805, + 1142, 1232, 1634, 3665, 1699, 1095, 1077, 1025, 1046, 1306, + 3665, 384, 981, 2211, 2218, 2238, 2243, 2263, 2288, 2249, + 2307, 2596, 2632, 2668, 2304, 2354, 2395, 983, 894, 1902, + 1928, 2362, 1929, 2704, 0, 1428, 2715, 2403, 2437, 2445, + 867, 2454, 2474, 2483, 831, 1982, 3665, 1983, 782, 3665, + 1511, 2489, 2529, 2537, 1895, 2758, 2794, 2573, 2579, 650, + 2607, 2617, 2642, 629, 525, 1931, 447, 347, 2650, 0, + 1528, 2019, 3665, 2044, 1805, 2830, 2866, 2902, 2676, 2684, + 2692, 323, 0, 316, 2067, 3665, 166, 1845, 3665, 2733, + 1945, 2938, 2974, 2743, 3665, 2767, 2777, 2658, 3665, 2805, 2813, 2847, 63, 2855, 2881, 3665, 3023, 3039, 3055, 3071, - 3087, 3103, 3119, 3135, 3151, 3157, 3173, 3189, 1498, 3205, + 3087, 3103, 3119, 3135, 3151, 3157, 3173, 3189, 2025, 3205, 3221, 3237, 3253, 3269, 3285, 3301, 3307, 3314, 3330, 3346, 3352, 3359, 3365, 3371, 3377, 3384, 3390, 3396, 3402, 3409, 3417, 3423, 3429, 3435, 3442, 3450, 3456, 3462, 3469, 3477, 3483, 3491, 3498, 3506, 3512, 3520, 3527, 3535, 3551, 3567, - 3573, 3581, 3588, 3604, 3610, 3618, 3624, 3632, 1295, 3648 + 3583, 3589, 3597, 3604, 3610, 3618, 3624, 3632, 3648, 1295 } ; static yyconst short int yy_def[671] = @@ -534,21 +534,21 @@ static yyconst short int yy_def[671] = 655, 655, 656, 392, 656, 656, 436, 436, 606, 439, 439, 606, 439, 606, 606, 606, 606, 606, 606, 657, 657, 658, 658, 658, 454, 454, 35, 35, 35, 35, - 606, 606, 606, 606, 606, 606, 623, 623, 611, 659, - 660, 611, 611, 611, 611, 611, 611, 606, 606, 606, - 606, 606, 606, 661, 661, 662, 442, 662, 662, 489, + 606, 606, 606, 606, 606, 606, 659, 623, 611, 660, + 661, 611, 611, 611, 611, 611, 611, 606, 606, 606, + 606, 606, 606, 662, 662, 663, 442, 663, 663, 489, 489, 606, 492, 492, 606, 492, 606, 606, 606, 606, - 663, 663, 606, 606, 35, 35, 35, 606, 664, 623, - 611, 659, 659, 659, 659, 606, 659, 660, 660, 611, - 611, 611, 606, 606, 606, 606, 665, 665, 666, 495, - 666, 666, 532, 532, 606, 535, 535, 535, 606, 606, - 606, 606, 606, 606, 606, 35, 35, 606, 664, 606, + 664, 664, 606, 606, 35, 35, 35, 606, 659, 659, + 606, 623, 611, 660, 660, 660, 660, 606, 660, 661, + 661, 611, 611, 611, 606, 606, 606, 606, 665, 665, + 666, 495, 666, 666, 534, 534, 606, 537, 537, 537, + 606, 606, 606, 606, 606, 606, 606, 35, 35, 606, 623, 606, 606, 611, 611, 611, 611, 611, 606, 606, 606, 606, 606, 606, 667, 667, 668, 668, 668, 569, - 569, 606, 606, 35, 623, 611, 611, 611, 606, 606, - 606, 606, 669, 669, 606, 606, 670, 611, 611, 611, - 611, 611, 606, 606, 606, 606, 606, 670, 606, 611, + 569, 606, 606, 35, 669, 611, 611, 611, 606, 606, + 606, 606, 670, 670, 606, 606, 669, 669, 606, 611, + 611, 611, 611, 611, 606, 606, 606, 606, 606, 611, 611, 611, 611, 611, 611, 0, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, @@ -578,7 +578,7 @@ static yyconst short int yy_nxt[3732] = 56, 79, 147, 127, 77, 56, 148, 60, 61, 93, 93, 150, 115, 93, 93, 238, 152, 62, 99, 99, 99, 99, 99, 99, 99, 99, 146, 87, 79, 79, - 146, 93, 62, 15, 16, 17, 117, 63, 599, 152, + 146, 93, 62, 15, 16, 17, 117, 63, 589, 152, 192, 195, 129, 77, 100, 100, 100, 100, 100, 101, 143, 115, 130, 78, 94, 98, 98, 98, 98, 98, 98, 98, 98, 79, 118, 119, 155, 156, 120, 151, @@ -596,11 +596,11 @@ static yyconst short int yy_nxt[3732] = 79, 152, 68, 69, 70, 606, 196, 79, 134, 134, 79, 606, 134, 134, 79, 198, 71, 168, 168, 168, - 168, 168, 168, 606, 155, 156, 79, 231, 159, 599, + 168, 168, 168, 606, 155, 156, 79, 231, 159, 382, 134, 160, 160, 160, 160, 160, 160, 160, 160, 241, - 72, 15, 16, 17, 67, 63, 382, 170, 89, 283, + 72, 15, 16, 17, 67, 63, 532, 170, 89, 283, 68, 69, 70, 135, 162, 86, 214, 86, 86, 267, - 530, 86, 86, 268, 71, 86, 170, 164, 165, 166, + 606, 86, 86, 268, 71, 86, 170, 164, 165, 166, 164, 164, 164, 164, 164, 214, 93, 93, 86, 86, 93, 93, 79, 79, 79, 240, 83, 238, 72, 83, 168, 168, 168, 168, 168, 168, 168, 168, 93, 84, @@ -611,7 +611,7 @@ static yyconst short int yy_nxt[3732] = 168, 168, 168, 168, 168, 168, 168, 85, 85, 85, 85, 85, 85, 85, 85, 79, 551, 98, 98, 98, 98, 98, 98, 78, 145, 79, 280, 145, 145, 78, - 606, 237, 78, 78, 145, 78, 78, 78, 104, 104, + 382, 237, 78, 78, 145, 78, 78, 78, 104, 104, 104, 104, 104, 104, 104, 104, 97, 145, 279, 78, 104, 104, 104, 104, 104, 105, 105, 105, 105, 106, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, @@ -620,7 +620,7 @@ static yyconst short int yy_nxt[3732] = 78, 78, 78, 78, 78, 78, 78, 78, 78, 105, 105, 105, 105, 105, 105, 105, 105, 606, 249, 249, 249, 105, 105, 105, 105, 105, 177, 79, 79, 79, - 105, 178, 170, 275, 179, 282, 180, 117, 382, 143, + 105, 178, 170, 275, 179, 282, 180, 117, 532, 143, 115, 214, 97, 238, 78, 78, 78, 78, 78, 78, 114, 115, 78, 78, 78, 170, 78, 78, 134, 134, 78, 265, 134, 134, 214, 118, 119, 79, 79, 120, @@ -632,8 +632,8 @@ static yyconst short int yy_nxt[3732] = 606, 606, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 484, 484, 123, 83, 242, 243, 244, 242, 242, 242, 242, 242, - 83, 142, 530, 322, 606, 606, 606, 606, 606, 606, - 606, 606, 78, 487, 78, 78, 78, 170, 78, 78, + 83, 142, 487, 322, 606, 606, 606, 606, 606, 606, + 606, 606, 78, 559, 78, 78, 78, 170, 78, 78, 253, 170, 78, 134, 79, 79, 255, 134, 606, 170, 255, 83, 79, 134, 78, 78, 78, 90, 255, 90, 90, 90, 372, 90, 90, 134, 134, 90, 247, 247, @@ -651,17 +651,17 @@ static yyconst short int yy_nxt[3732] = 257, 257, 257, 258, 258, 258, 258, 258, 259, 365, 253, 170, 79, 167, 167, 167, 167, 167, 167, 133, - 300, 78, 78, 133, 559, 78, 78, 421, 606, 133, + 300, 78, 78, 133, 574, 78, 78, 421, 606, 133, 256, 256, 256, 256, 256, 256, 256, 256, 606, 170, - 419, 133, 133, 78, 201, 550, 202, 202, 202, 202, + 419, 133, 133, 78, 201, 170, 202, 202, 202, 202, 202, 202, 202, 202, 289, 289, 289, 289, 289, 289, 289, 289, 211, 294, 295, 296, 294, 294, 294, 294, 294, 264, 264, 264, 264, 264, 264, 264, 264, 79, - 201, 574, 203, 203, 203, 203, 203, 203, 203, 203, + 201, 170, 203, 203, 203, 203, 203, 203, 203, 203, 253, 170, 298, 298, 298, 298, 298, 298, 467, 83, 255, 302, 302, 302, 302, 302, 302, 302, 302, 303, - 303, 303, 303, 303, 304, 79, 201, 170, 204, 204, + 303, 303, 303, 303, 304, 79, 201, 487, 204, 204, 204, 204, 204, 205, 202, 202, 606, 366, 301, 301, 301, 301, 301, 301, 301, 301, 606, 170, 325, 326, 327, 325, 325, 325, 325, 325, 300, 501, 501, 367, @@ -671,41 +671,41 @@ static yyconst short int yy_nxt[3732] = 284, 284, 284, 284, 284, 300, 79, 420, 469, 206, 206, 206, 206, 206, 206, 208, 209, 210, 210, 210, - 210, 210, 210, 211, 253, 170, 170, 212, 212, 212, + 210, 210, 210, 211, 253, 170, 434, 212, 212, 212, 212, 212, 79, 337, 346, 338, 338, 338, 338, 338, - 338, 338, 338, 349, 349, 349, 349, 349, 350, 487, + 338, 338, 338, 349, 349, 349, 349, 349, 350, 79, 212, 212, 212, 212, 212, 212, 170, 215, 216, 217, - 215, 215, 215, 215, 215, 218, 527, 527, 434, 219, + 215, 215, 215, 215, 215, 218, 510, 511, 511, 219, 219, 219, 219, 219, 337, 375, 339, 339, 339, 339, 339, 339, 339, 339, 309, 309, 309, 309, 309, 309, 309, 309, 219, 219, 219, 219, 219, 219, 220, 220, - 220, 220, 220, 220, 220, 220, 606, 170, 79, 79, + 220, 220, 220, 220, 220, 220, 606, 170, 550, 79, 220, 220, 220, 220, 220, 337, 346, 340, 340, 340, 340, 340, 341, 338, 338, 348, 348, 348, 348, 348, 348, 348, 348, 206, 206, 206, 206, 206, 206, 201, - 550, 202, 202, 202, 202, 202, 202, 202, 202, 253, + 549, 202, 202, 202, 202, 202, 202, 202, 202, 253, 170, 344, 344, 344, 344, 344, 344, 548, 606, 300, 347, 347, 347, 347, 347, 347, 347, 347, 387, 387, - 387, 387, 387, 388, 79, 201, 547, 202, 202, 202, + 387, 387, 387, 388, 79, 201, 170, 202, 202, 202, 202, 202, 202, 202, 202, 336, 336, 336, 336, 336, 336, 336, 336, 386, 386, 386, 386, 386, 386, 386, 386, 394, 395, 396, 394, 394, 394, 394, 394, 358, 79, 253, 170, 254, 254, 254, 254, 254, 254, 254, - 254, 255, 253, 170, 546, 256, 256, 256, 256, 256, + 254, 255, 529, 529, 434, 256, 256, 256, 256, 256, 606, 359, 385, 385, 385, 385, 385, 385, 385, 385, - 337, 170, 338, 338, 338, 338, 338, 338, 256, 256, + 337, 384, 338, 338, 338, 338, 338, 338, 256, 256, 256, 256, 256, 256, 170, 260, 261, 262, 260, 260, - 260, 260, 260, 263, 170, 565, 565, 264, 264, 264, + 260, 260, 260, 263, 170, 253, 170, 264, 264, 264, 264, 264, 337, 300, 338, 338, 338, 338, 338, 338, 338, 338, 355, 355, 355, 355, 355, 355, 355, 355, - 264, 264, 264, 264, 264, 264, 283, 434, 284, 284, + 264, 264, 264, 264, 264, 264, 283, 478, 284, 284, 284, 284, 284, 284, 284, 284, 337, 364, 338, 338, 338, 338, 338, 338, 338, 338, 253, 170, 399, 399, - 399, 399, 399, 399, 170, 597, 346, 575, 83, 365, - 597, 79, 283, 346, 285, 285, 285, 285, 285, 285, + 399, 399, 399, 399, 170, 599, 346, 510, 511, 365, + 599, 79, 283, 346, 285, 285, 285, 285, 285, 285, 285, 285, 403, 403, 403, 403, 403, 403, 403, 403, 404, 404, 404, 404, 404, 405, 606, 366, 402, 402, 402, 402, 402, 402, 402, 402, 79, 79, 283, 170, @@ -718,21 +718,21 @@ static yyconst short int yy_nxt[3732] = 299, 299, 299, 299, 299, 300, 79, 463, 503, 301, 301, 301, 301, 301, 375, 376, 376, 376, 376, 376, 376, 393, 393, 393, 393, 393, 393, 393, 393, 464, - 504, 384, 301, 301, 301, 301, 301, 301, 170, 305, - 306, 307, 305, 305, 305, 305, 305, 308, 79, 583, - 583, 309, 309, 309, 309, 309, 436, 436, 436, 436, + 504, 508, 301, 301, 301, 301, 301, 301, 170, 305, + 306, 307, 305, 305, 305, 305, 305, 308, 79, 565, + 565, 309, 309, 309, 309, 309, 436, 436, 436, 436, 436, 436, 436, 436, 437, 437, 437, 437, 437, 438, - 478, 253, 170, 508, 309, 309, 309, 309, 309, 309, + 507, 253, 170, 506, 309, 309, 309, 309, 309, 309, 283, 346, 284, 284, 284, 284, 284, 284, 284, 284, 606, 382, 435, 435, 435, 435, 435, 435, 435, 435, 444, 384, 445, 445, 445, 445, 445, 445, 445, 445, - 507, 472, 144, 144, 83, 79, 283, 382, 284, 284, + 505, 472, 575, 83, 83, 79, 283, 382, 284, 284, 284, 284, 284, 284, 284, 284, 444, 434, 446, 446, 446, 446, 446, 446, 446, 446, 444, 606, 447, 447, - 447, 447, 447, 448, 445, 445, 79, 434, 461, 506, - 505, 79, 332, 333, 334, 332, 332, 332, 332, 332, - 335, 253, 170, 444, 336, 336, 336, 336, 336, 510, + 447, 447, 447, 448, 445, 445, 79, 434, 461, 583, + 583, 79, 332, 333, 334, 332, 332, 332, 332, 332, + 335, 253, 170, 444, 336, 336, 336, 336, 336, 512, 462, 401, 409, 409, 409, 409, 409, 409, 409, 409, 455, 455, 455, 455, 455, 456, 384, 336, 336, 336, 336, 336, 336, 253, 170, 344, 344, 344, 344, 344, @@ -740,7 +740,7 @@ static yyconst short int yy_nxt[3732] = 344, 344, 344, 300, 253, 170, 345, 345, 345, 345, 345, 345, 345, 345, 346, 606, 170, 463, 347, 347, 347, 347, 347, 79, 472, 401, 253, 170, 451, 451, - 451, 451, 451, 451, 331, 503, 401, 79, 511, 464, + 451, 451, 451, 451, 331, 503, 401, 79, 513, 464, 466, 347, 347, 347, 347, 347, 347, 170, 351, 352, 353, 351, 351, 351, 351, 351, 354, 504, 465, 79, 355, 355, 355, 355, 355, 454, 454, 454, 454, 454, @@ -748,9 +748,9 @@ static yyconst short int yy_nxt[3732] = 453, 453, 453, 355, 355, 355, 355, 355, 355, 375, 376, 376, 376, 376, 376, 376, 376, 376, 470, 478, - 544, 479, 479, 479, 479, 479, 479, 479, 479, 443, + 546, 479, 479, 479, 479, 479, 479, 479, 479, 443, 443, 443, 443, 443, 443, 443, 443, 460, 470, 459, - 470, 471, 545, 79, 375, 377, 377, 377, 377, 377, + 470, 471, 547, 79, 375, 377, 377, 377, 377, 377, 377, 377, 377, 478, 470, 480, 480, 480, 480, 480, 480, 480, 480, 79, 478, 382, 481, 481, 481, 481, 481, 482, 479, 479, 470, 434, 470, 470, 79, 375, @@ -759,70 +759,70 @@ static yyconst short int yy_nxt[3732] = 490, 491, 606, 170, 488, 488, 488, 488, 488, 488, 488, 488, 401, 79, 382, 382, 383, 383, 383, 383, - 383, 383, 383, 383, 384, 487, 458, 457, 385, 385, + 383, 383, 383, 383, 384, 487, 588, 589, 385, 385, 385, 385, 385, 497, 498, 499, 497, 497, 497, 497, - 497, 444, 331, 445, 445, 445, 445, 445, 445, 445, + 497, 444, 458, 445, 445, 445, 445, 445, 445, 445, 445, 385, 385, 385, 385, 385, 385, 389, 390, 391, - 389, 389, 389, 389, 389, 392, 251, 418, 417, 393, + 389, 389, 389, 389, 389, 392, 588, 589, 457, 393, 393, 393, 393, 393, 444, 606, 445, 445, 445, 445, 445, 445, 445, 445, 444, 487, 445, 445, 445, 445, 445, 445, 393, 393, 393, 393, 393, 393, 253, 170, 399, 399, 399, 399, 399, 399, 399, 399, 346, 253, 170, 400, 400, 400, 400, 400, 400, 400, 400, 401, - 253, 170, 382, 402, 402, 402, 402, 402, 467, 83, - 401, 513, 487, 514, 515, 516, 513, 415, 514, 515, - 516, 509, 544, 414, 554, 588, 402, 402, 402, 402, + 253, 170, 331, 402, 402, 402, 402, 402, 554, 515, + 401, 516, 517, 518, 515, 382, 516, 517, 518, 535, + 535, 535, 535, 535, 536, 487, 402, 402, 402, 402, 402, 402, 170, 406, 407, 408, 406, 406, 406, 406, - 406, 413, 572, 572, 545, 409, 409, 409, 409, 409, - 520, 521, 522, 520, 520, 520, 520, 520, 517, 79, - 79, 412, 411, 519, 573, 573, 410, 337, 409, 409, + 406, 382, 606, 79, 382, 409, 409, 409, 409, 409, + 251, 532, 532, 418, 532, 417, 519, 415, 590, 414, + 472, 521, 473, 473, 473, 473, 473, 473, 409, 409, 409, 409, 409, 409, 375, 376, 376, 376, 376, 376, - 376, 376, 376, 79, 472, 331, 473, 473, 473, 473, - 473, 473, 523, 524, 525, 523, 523, 523, 523, 523, + 376, 376, 376, 546, 572, 522, 523, 524, 522, 522, + 522, 522, 522, 79, 413, 79, 525, 526, 527, 525, - 478, 251, 479, 479, 479, 479, 479, 479, 79, 375, - 376, 376, 376, 376, 376, 376, 376, 376, 478, 79, - 479, 479, 479, 479, 479, 479, 479, 479, 478, 382, - 479, 479, 479, 479, 479, 479, 479, 479, 211, 530, - 370, 369, 363, 79, 382, 585, 432, 432, 432, 432, - 432, 432, 432, 432, 384, 382, 606, 433, 433, 433, - 433, 433, 433, 433, 433, 434, 530, 586, 585, 435, - 435, 435, 435, 435, 496, 496, 496, 496, 496, 496, - 496, 496, 532, 532, 532, 532, 532, 532, 532, 532, - 586, 362, 435, 435, 435, 435, 435, 435, 439, 440, + 525, 525, 525, 525, 412, 547, 573, 411, 79, 375, + 376, 376, 376, 376, 376, 376, 376, 376, 79, 478, + 572, 479, 479, 479, 479, 479, 479, 479, 479, 478, + 410, 479, 479, 479, 479, 479, 479, 479, 479, 144, + 144, 337, 573, 79, 382, 585, 432, 432, 432, 432, + 432, 432, 432, 432, 384, 382, 331, 433, 433, 433, + 433, 433, 433, 433, 433, 434, 251, 586, 585, 435, + 435, 435, 435, 435, 478, 211, 479, 479, 479, 479, + 479, 479, 496, 496, 496, 496, 496, 496, 496, 496, + 586, 370, 435, 435, 435, 435, 435, 435, 439, 440, - 441, 439, 439, 439, 439, 439, 442, 357, 356, 331, - 443, 443, 443, 443, 443, 533, 533, 533, 533, 533, - 534, 606, 382, 531, 531, 531, 531, 531, 531, 531, - 531, 251, 530, 443, 443, 443, 443, 443, 443, 253, + 441, 439, 439, 439, 439, 439, 442, 369, 363, 362, + 443, 443, 443, 443, 443, 534, 534, 534, 534, 534, + 534, 534, 534, 606, 357, 533, 533, 533, 533, 533, + 533, 533, 533, 443, 443, 443, 443, 443, 443, 253, 170, 451, 451, 451, 451, 451, 451, 451, 451, 401, 253, 170, 452, 452, 452, 452, 452, 452, 452, 452, - 211, 211, 276, 320, 453, 453, 453, 453, 453, 170, - 539, 539, 539, 539, 539, 539, 539, 539, 170, 540, - 540, 540, 540, 540, 540, 540, 540, 453, 453, 453, - 453, 453, 453, 472, 319, 473, 473, 473, 473, 473, + 356, 331, 251, 211, 453, 453, 453, 453, 453, 170, + 541, 541, 541, 541, 541, 541, 541, 541, 170, 542, + 542, 542, 542, 542, 542, 542, 542, 453, 453, 453, + 453, 453, 453, 472, 211, 473, 473, 473, 473, 473, - 473, 473, 473, 170, 541, 541, 541, 541, 541, 542, - 539, 539, 606, 317, 606, 606, 606, 575, 83, 513, - 316, 514, 515, 516, 315, 314, 313, 312, 79, 472, - 587, 474, 474, 474, 474, 474, 474, 474, 474, 606, - 311, 514, 515, 516, 606, 310, 606, 606, 516, 292, - 606, 251, 606, 606, 606, 211, 288, 211, 103, 517, - 276, 278, 276, 277, 79, 472, 517, 475, 475, 475, + 473, 473, 473, 170, 543, 543, 543, 543, 543, 544, + 541, 541, 606, 276, 606, 606, 606, 320, 319, 515, + 317, 516, 517, 518, 316, 315, 314, 313, 79, 472, + 312, 474, 474, 474, 474, 474, 474, 474, 474, 606, + 311, 516, 517, 518, 606, 310, 606, 606, 518, 292, + 606, 251, 606, 606, 606, 211, 288, 211, 103, 519, + 276, 278, 276, 277, 79, 472, 519, 475, 475, 475, 475, 475, 476, 477, 477, 552, 276, 274, 553, 553, - 553, 553, 553, 553, 553, 553, 517, 273, 272, 271, - 270, 517, 269, 97, 211, 512, 512, 519, 251, 512, + 553, 553, 553, 553, 553, 553, 519, 273, 272, 271, + 270, 519, 269, 97, 211, 514, 514, 521, 251, 514, 79, 472, 211, 477, 477, 477, 473, 473, 473, 473, - 473, 512, 512, 512, 518, 518, 103, 559, 518, 560, + 473, 514, 514, 514, 520, 520, 103, 559, 520, 560, 560, 560, 560, 560, 560, 560, 560, 83, 199, 239, - 518, 518, 518, 236, 235, 234, 79, 382, 233, 485, + 520, 520, 520, 236, 235, 234, 79, 382, 233, 485, 485, 485, 485, 485, 485, 485, 485, 434, 382, 232, 486, 486, 486, 486, 486, 486, 486, 486, 487, 230, 229, 228, 488, 488, 488, 488, 488, 559, 227, 561, - 561, 561, 561, 561, 561, 561, 561, 538, 538, 538, - 538, 538, 538, 538, 538, 488, 488, 488, 488, 488, + 561, 561, 561, 561, 561, 561, 561, 540, 540, 540, + 540, 540, 540, 540, 540, 488, 488, 488, 488, 488, 488, 492, 493, 494, 492, 492, 492, 492, 492, 495, 226, 225, 224, 496, 496, 496, 496, 496, 559, 223, @@ -831,65 +831,65 @@ static yyconst short int yy_nxt[3732] = 496, 496, 253, 170, 502, 502, 502, 502, 502, 502, 502, 502, 472, 222, 473, 473, 473, 473, 473, 473, 473, 473, 570, 570, 570, 570, 570, 571, 606, 221, - 568, 568, 568, 568, 568, 568, 568, 568, 170, 539, - 539, 539, 539, 539, 539, 539, 539, 79, 472, 103, - 473, 473, 473, 473, 473, 473, 473, 473, 170, 539, - 539, 539, 539, 539, 539, 539, 539, 170, 539, 539, + 568, 568, 568, 568, 568, 568, 568, 568, 170, 541, + 541, 541, 541, 541, 541, 541, 541, 79, 472, 103, + 473, 473, 473, 473, 473, 473, 473, 473, 170, 541, + 541, 541, 541, 541, 541, 541, 541, 170, 541, 541, - 539, 539, 539, 539, 553, 553, 553, 553, 553, 553, - 553, 553, 95, 79, 382, 83, 528, 528, 528, 528, - 528, 528, 528, 528, 487, 382, 83, 529, 529, 529, - 529, 529, 529, 529, 529, 530, 199, 151, 152, 531, - 531, 531, 531, 531, 553, 553, 553, 553, 553, 553, + 541, 541, 541, 541, 553, 553, 553, 553, 553, 553, + 553, 553, 95, 79, 382, 83, 530, 530, 530, 530, + 530, 530, 530, 530, 487, 382, 83, 531, 531, 531, + 531, 531, 531, 531, 531, 532, 199, 151, 152, 533, + 533, 533, 533, 533, 553, 553, 553, 553, 553, 553, 553, 553, 576, 577, 578, 576, 576, 576, 576, 576, - 146, 146, 531, 531, 531, 531, 531, 531, 535, 536, - 537, 535, 535, 535, 535, 535, 138, 197, 132, 132, - 538, 538, 538, 538, 538, 79, 554, 190, 555, 555, + 146, 146, 533, 533, 533, 533, 533, 533, 537, 538, + 539, 537, 537, 537, 537, 537, 138, 197, 132, 132, + 540, 540, 540, 540, 540, 79, 554, 190, 555, 555, 555, 555, 555, 555, 579, 580, 581, 579, 579, 579, - 579, 579, 189, 538, 538, 538, 538, 538, 538, 554, + 579, 579, 189, 540, 540, 540, 540, 540, 540, 554, 188, 555, 555, 555, 555, 555, 555, 555, 555, 187, 559, 79, 560, 560, 560, 560, 560, 560, 560, 560, 559, 186, 560, 560, 560, 560, 560, 560, 560, 560, 184, 183, 182, 181, 79, 554, 176, 556, 556, 556, 556, 556, 556, 556, 556, 559, 175, 560, 560, 560, 560, 560, 560, 382, 174, 584, 584, 584, 584, 584, - 584, 584, 584, 593, 593, 593, 593, 593, 593, 103, + 584, 584, 584, 595, 595, 595, 595, 595, 595, 103, 79, 554, 78, 557, 557, 557, 557, 557, 558, 555, - 555, 593, 593, 593, 593, 593, 593, 593, 593, 594, + 555, 595, 595, 595, 595, 595, 595, 595, 595, 596, - 594, 594, 594, 594, 594, 594, 594, 595, 595, 595, - 595, 595, 596, 593, 593, 103, 79, 382, 163, 566, - 566, 566, 566, 566, 566, 566, 566, 530, 382, 91, + 596, 596, 596, 596, 596, 596, 596, 597, 597, 597, + 597, 597, 598, 595, 595, 103, 79, 382, 163, 566, + 566, 566, 566, 566, 566, 566, 566, 532, 382, 91, 567, 567, 567, 567, 567, 567, 567, 567, 83, 81, 80, 79, 568, 568, 568, 568, 568, 152, 600, 601, - 602, 600, 600, 600, 600, 600, 588, 146, 589, 589, - 589, 589, 589, 589, 138, 568, 568, 568, 568, 568, + 602, 600, 600, 600, 600, 600, 590, 146, 591, 591, + 591, 591, 591, 591, 138, 568, 568, 568, 568, 568, 568, 554, 132, 555, 555, 555, 555, 555, 555, 555, - 555, 79, 593, 593, 593, 593, 593, 593, 593, 593, - 128, 79, 593, 593, 593, 593, 593, 593, 593, 593, + 555, 79, 595, 595, 595, 595, 595, 595, 595, 595, + 128, 79, 595, 595, 595, 595, 595, 595, 595, 595, 126, 113, 112, 111, 110, 109, 79, 554, 108, 555, 555, 555, 555, 555, 555, 555, 555, 105, 103, 91, 603, 603, 603, 603, 603, 603, 603, 603, 600, 600, 600, 600, 600, 600, 600, 600, 81, 80, 79, 606, - 606, 606, 79, 588, 606, 589, 589, 589, 589, 589, - 589, 589, 589, 79, 606, 606, 606, 606, 606, 606, + 606, 606, 79, 590, 606, 591, 591, 591, 591, 591, + 591, 591, 591, 79, 606, 606, 606, 606, 606, 606, 606, 79, 604, 604, 604, 604, 604, 605, 603, 603, - 603, 603, 603, 603, 603, 603, 603, 603, 79, 588, - 606, 590, 590, 590, 590, 590, 590, 590, 590, 606, + 603, 603, 603, 603, 603, 603, 603, 603, 79, 590, + 606, 592, 592, 592, 592, 592, 592, 592, 592, 606, 606, 606, 606, 606, 606, 79, 603, 603, 603, 603, 603, 603, 606, 79, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 79, 588, 606, 591, 591, 591, - 591, 591, 592, 589, 589, 606, 606, 606, 606, 79, + 606, 606, 606, 606, 79, 590, 606, 593, 593, 593, + 593, 593, 594, 591, 591, 606, 606, 606, 606, 79, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 79, 588, 606, 589, 589, 589, 589, 589, 589, 589, - 589, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 79, 590, 606, 591, 591, 591, 591, 591, 591, 591, + 591, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 79, 588, 606, 589, - 589, 589, 589, 589, 589, 589, 589, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 79, 590, 606, 591, + 591, 591, 591, 591, 591, 591, 591, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, @@ -951,19 +951,19 @@ static yyconst short int yy_nxt[3732] = 606, 450, 483, 483, 606, 606, 606, 483, 484, 606, 484, 484, 606, 606, 606, 484, 500, 500, 500, 606, 606, 606, 500, 501, 501, 501, 606, 606, 606, 606, - 501, 512, 512, 606, 512, 512, 512, 606, 606, 512, - 512, 512, 606, 606, 512, 512, 512, 518, 518, 606, - 518, 518, 518, 606, 606, 518, 518, 518, 606, 606, - 518, 518, 518, 526, 526, 606, 606, 606, 526, 527, - 606, 527, 527, 606, 606, 606, 527, 543, 543, 606, + 501, 509, 509, 509, 509, 509, 509, 509, 509, 509, + 509, 509, 509, 509, 509, 509, 509, 514, 514, 606, + 514, 514, 514, 606, 606, 514, 514, 514, 606, 606, + 514, 514, 514, 520, 520, 606, 520, 520, 520, 606, + 606, 520, 520, 520, 606, 606, 520, 520, 520, 528, - 606, 606, 606, 543, 549, 549, 549, 549, 549, 549, - 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, + 528, 606, 606, 606, 528, 529, 606, 529, 529, 606, + 606, 606, 529, 545, 545, 606, 606, 606, 606, 545, 564, 564, 606, 606, 606, 564, 565, 606, 565, 565, 606, 606, 606, 565, 582, 582, 606, 606, 606, 582, - 583, 606, 583, 606, 606, 606, 606, 583, 598, 598, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 598, 13, 606, 606, 606, 606, 606, + 583, 606, 583, 606, 606, 606, 606, 583, 587, 587, + 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, + 587, 587, 587, 587, 13, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, @@ -993,7 +993,7 @@ static yyconst short int yy_chk[3732] = 3, 196, 68, 50, 11, 4, 70, 6, 6, 25, 25, 72, 72, 25, 25, 196, 74, 5, 27, 27, 27, 27, 27, 27, 27, 27, 68, 88, 124, 127, - 70, 25, 6, 7, 7, 7, 45, 7, 598, 75, + 70, 25, 6, 7, 7, 7, 45, 7, 587, 75, 124, 127, 129, 12, 28, 28, 28, 28, 28, 28, 139, 139, 129, 43, 25, 43, 43, 43, 43, 43, 43, 43, 43, 194, 45, 45, 77, 77, 45, 77, @@ -1011,22 +1011,22 @@ static yyconst short int yy_chk[3732] = 128, 154, 9, 9, 9, 86, 128, 202, 55, 55, 136, 161, 55, 55, 185, 136, 9, 101, 101, 101, - 101, 101, 101, 86, 155, 155, 198, 185, 87, 587, + 101, 101, 101, 86, 155, 155, 198, 185, 87, 584, 55, 87, 87, 87, 87, 87, 87, 87, 87, 198, - 9, 10, 10, 10, 10, 10, 584, 171, 86, 284, + 9, 10, 10, 10, 10, 10, 582, 171, 86, 284, 10, 10, 10, 55, 161, 89, 171, 89, 89, 222, - 582, 89, 89, 222, 10, 89, 213, 95, 95, 95, + 568, 89, 89, 222, 10, 89, 213, 95, 95, 95, 95, 95, 95, 95, 95, 213, 92, 92, 89, 89, - 92, 92, 192, 195, 284, 195, 510, 192, 10, 19, + 92, 92, 192, 195, 284, 195, 512, 192, 10, 19, 99, 99, 99, 99, 99, 99, 99, 99, 92, 19, 95, 221, 19, 19, 19, 19, 19, 19, 19, 19, 26, 191, 26, 26, 26, 26, 26, 26, 26, 26, 26, 92, 237, 221, 26, 26, 26, 26, 26, 100, 100, 100, 100, 100, 100, 100, 100, 131, 131, 131, - 131, 131, 131, 131, 131, 26, 510, 26, 26, 26, + 131, 131, 131, 131, 131, 26, 512, 26, 26, 26, 26, 26, 26, 32, 146, 238, 238, 146, 146, 32, - 568, 191, 32, 32, 146, 32, 32, 32, 32, 32, + 567, 191, 32, 32, 146, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 146, 237, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, @@ -1035,7 +1035,7 @@ static yyconst short int yy_chk[3732] = 32, 32, 32, 32, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35, 35, 35, 35, 35, 210, 210, 210, 35, 35, 35, 35, 35, 109, 231, 240, 241, - 35, 109, 252, 231, 109, 241, 109, 117, 567, 150, + 35, 109, 252, 231, 109, 241, 109, 117, 565, 150, 150, 252, 239, 240, 35, 35, 35, 35, 35, 35, 42, 42, 42, 42, 42, 293, 42, 42, 133, 133, 42, 265, 133, 133, 293, 117, 117, 239, 281, 117, @@ -1047,8 +1047,8 @@ static yyconst short int yy_chk[3732] = 142, 142, 159, 159, 159, 159, 159, 159, 159, 159, 160, 160, 160, 160, 160, 160, 160, 160, 438, 438, 46, 63, 201, 201, 201, 201, 201, 201, 201, 201, - 279, 63, 565, 280, 63, 63, 63, 63, 63, 63, - 63, 63, 79, 564, 79, 79, 79, 297, 79, 79, + 279, 63, 564, 280, 63, 63, 63, 63, 63, 63, + 63, 63, 79, 560, 79, 79, 79, 297, 79, 79, 254, 254, 79, 197, 280, 201, 297, 197, 256, 256, 254, 321, 322, 197, 79, 79, 79, 91, 256, 91, 91, 91, 322, 91, 91, 197, 197, 91, 209, 209, @@ -1066,17 +1066,17 @@ static yyconst short int yy_chk[3732] = 216, 216, 216, 217, 217, 217, 217, 217, 217, 316, 299, 299, 373, 104, 104, 104, 104, 104, 104, 135, - 299, 135, 135, 135, 560, 135, 135, 373, 219, 135, + 299, 135, 135, 135, 549, 135, 135, 373, 219, 135, 219, 219, 219, 219, 219, 219, 219, 219, 453, 453, - 371, 135, 135, 135, 164, 549, 164, 164, 164, 164, + 371, 135, 135, 135, 164, 545, 164, 164, 164, 164, 164, 164, 164, 164, 247, 247, 247, 247, 247, 247, 247, 247, 247, 253, 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 164, - 165, 547, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 541, 165, 165, 165, 165, 165, 165, 165, 165, 259, 259, 259, 259, 259, 259, 259, 259, 419, 419, 259, 261, 261, 261, 261, 261, 261, 261, 261, 262, - 262, 262, 262, 262, 262, 165, 166, 543, 166, 166, + 262, 262, 262, 262, 262, 165, 166, 529, 166, 166, 166, 166, 166, 166, 166, 166, 264, 317, 264, 264, 264, 264, 264, 264, 264, 264, 301, 301, 283, 283, 283, 283, 283, 283, 283, 283, 301, 456, 456, 317, @@ -1086,41 +1086,41 @@ static yyconst short int yy_chk[3732] = 287, 287, 287, 287, 287, 344, 420, 372, 420, 167, 167, 167, 167, 167, 167, 170, 170, 170, 170, 170, - 170, 170, 170, 170, 345, 345, 539, 170, 170, 170, + 170, 170, 170, 170, 345, 345, 528, 170, 170, 170, 170, 170, 287, 294, 345, 294, 294, 294, 294, 294, - 294, 294, 294, 307, 307, 307, 307, 307, 307, 527, + 294, 294, 294, 307, 307, 307, 307, 307, 307, 513, 170, 170, 170, 170, 170, 170, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 491, 491, 526, 172, + 172, 172, 172, 172, 172, 172, 467, 467, 509, 172, 172, 172, 172, 172, 295, 376, 295, 295, 295, 295, 295, 295, 295, 295, 300, 300, 300, 300, 300, 300, 300, 300, 172, 172, 172, 172, 172, 172, 173, 173, - 173, 173, 173, 173, 173, 173, 347, 347, 511, 376, + 173, 173, 173, 173, 173, 173, 347, 347, 508, 376, 173, 173, 173, 173, 173, 296, 347, 296, 296, 296, 296, 296, 296, 296, 296, 306, 306, 306, 306, 306, 306, 306, 306, 173, 173, 173, 173, 173, 173, 203, - 509, 203, 203, 203, 203, 203, 203, 203, 203, 304, - 304, 304, 304, 304, 304, 304, 304, 508, 309, 304, + 507, 203, 203, 203, 203, 203, 203, 203, 203, 304, + 304, 304, 304, 304, 304, 304, 304, 506, 309, 304, 309, 309, 309, 309, 309, 309, 309, 309, 334, 334, - 334, 334, 334, 334, 203, 204, 507, 204, 204, 204, + 334, 334, 334, 334, 203, 204, 501, 204, 204, 204, 204, 204, 204, 204, 204, 331, 331, 331, 331, 331, 331, 331, 331, 333, 333, 333, 333, 333, 333, 333, 333, 337, 337, 337, 337, 337, 337, 337, 337, 358, 204, 215, 215, 215, 215, 215, 215, 215, 215, 215, - 215, 215, 502, 502, 506, 215, 215, 215, 215, 215, + 215, 215, 491, 491, 484, 215, 215, 215, 215, 215, 336, 358, 336, 336, 336, 336, 336, 336, 336, 336, - 341, 501, 341, 341, 341, 341, 341, 341, 215, 215, + 341, 483, 341, 341, 341, 341, 341, 341, 215, 215, 215, 215, 215, 215, 218, 218, 218, 218, 218, 218, - 218, 218, 218, 218, 397, 534, 534, 218, 218, 218, + 218, 218, 218, 218, 397, 502, 502, 218, 218, 218, 218, 218, 339, 397, 339, 339, 339, 339, 339, 339, 339, 339, 346, 346, 346, 346, 346, 346, 346, 346, - 218, 218, 218, 218, 218, 218, 242, 484, 242, 242, + 218, 218, 218, 218, 218, 218, 242, 479, 242, 242, 242, 242, 242, 242, 242, 242, 340, 364, 340, 340, 340, 340, 340, 340, 340, 340, 350, 350, 350, 350, - 350, 350, 350, 350, 398, 669, 350, 551, 551, 364, - 669, 242, 243, 398, 243, 243, 243, 243, 243, 243, + 350, 350, 350, 350, 398, 670, 350, 510, 510, 364, + 670, 242, 243, 398, 243, 243, 243, 243, 243, 243, 243, 243, 352, 352, 352, 352, 352, 352, 352, 352, 353, 353, 353, 353, 353, 353, 355, 366, 355, 355, 355, 355, 355, 355, 355, 355, 374, 243, 244, 449, @@ -1133,20 +1133,20 @@ static yyconst short int yy_chk[3732] = 260, 260, 260, 260, 260, 260, 375, 415, 457, 260, 260, 260, 260, 260, 379, 379, 379, 379, 379, 379, 379, 384, 384, 384, 384, 384, 384, 384, 384, 415, - 457, 483, 260, 260, 260, 260, 260, 260, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 263, 379, 571, - 571, 263, 263, 263, 263, 263, 390, 390, 390, 390, + 457, 465, 260, 260, 260, 260, 260, 260, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, 379, 536, + 536, 263, 263, 263, 263, 263, 390, 390, 390, 390, 390, 390, 390, 390, 391, 391, 391, 391, 391, 391, - 479, 399, 399, 465, 263, 263, 263, 263, 263, 263, + 460, 399, 399, 459, 263, 263, 263, 263, 263, 263, 285, 399, 285, 285, 285, 285, 285, 285, 285, 285, 393, 432, 393, 393, 393, 393, 393, 393, 393, 393, 394, 432, 394, 394, 394, 394, 394, 394, 394, 394, - 460, 473, 619, 619, 468, 285, 286, 433, 286, 286, + 458, 473, 551, 551, 468, 285, 286, 433, 286, 286, 286, 286, 286, 286, 286, 286, 395, 433, 395, 395, 395, 395, 395, 395, 395, 395, 396, 435, 396, 396, - 396, 396, 396, 396, 396, 396, 473, 435, 461, 459, - 458, 286, 292, 292, 292, 292, 292, 292, 292, 292, + 396, 396, 396, 396, 396, 396, 473, 435, 461, 571, + 571, 286, 292, 292, 292, 292, 292, 292, 292, 292, 292, 400, 400, 445, 292, 292, 292, 292, 292, 468, 461, 400, 401, 401, 401, 401, 401, 401, 401, 401, 408, 408, 408, 408, 408, 408, 431, 292, 292, 292, @@ -1174,84 +1174,84 @@ static yyconst short int yy_chk[3732] = 441, 441, 443, 500, 443, 443, 443, 443, 443, 443, 443, 443, 500, 327, 332, 486, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 486, 411, 410, 332, 332, + 332, 332, 332, 332, 332, 486, 575, 575, 332, 332, 332, 332, 332, 444, 444, 444, 444, 444, 444, 444, - 444, 446, 381, 446, 446, 446, 446, 446, 446, 446, + 444, 446, 411, 446, 446, 446, 446, 446, 446, 446, 446, 332, 332, 332, 332, 332, 332, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 380, 370, 369, 335, + 335, 335, 335, 335, 335, 335, 588, 588, 410, 335, 335, 335, 335, 335, 447, 488, 447, 447, 447, 447, 447, 447, 447, 447, 448, 488, 448, 448, 448, 448, 448, 448, 335, 335, 335, 335, 335, 335, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 451, 451, 528, 351, 351, 351, 351, 351, 467, 467, - 451, 470, 528, 470, 470, 470, 471, 363, 471, 471, - 471, 467, 544, 362, 555, 589, 351, 351, 351, 351, + 451, 451, 381, 351, 351, 351, 351, 351, 555, 470, + 451, 470, 470, 470, 471, 530, 471, 471, 471, 494, + 494, 494, 494, 494, 494, 530, 351, 351, 351, 351, 351, 351, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 361, 546, 572, 544, 354, 354, 354, 354, 354, - 472, 472, 472, 472, 472, 472, 472, 472, 470, 555, - 589, 360, 357, 471, 546, 572, 356, 338, 354, 354, + 354, 531, 533, 555, 566, 354, 354, 354, 354, 354, + 380, 531, 533, 370, 566, 369, 470, 363, 591, 362, + 476, 471, 476, 476, 476, 476, 476, 476, 354, 354, 354, 354, 354, 354, 377, 377, 377, 377, 377, 377, - 377, 377, 377, 472, 476, 330, 476, 476, 476, 476, - 476, 476, 478, 478, 478, 478, 478, 478, 478, 478, + 377, 377, 377, 546, 548, 472, 472, 472, 472, 472, + 472, 472, 472, 591, 361, 476, 478, 478, 478, 478, - 482, 329, 482, 482, 482, 482, 482, 482, 377, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 480, 476, - 480, 480, 480, 480, 480, 480, 480, 480, 481, 529, - 481, 481, 481, 481, 481, 481, 481, 481, 328, 529, - 320, 319, 315, 378, 386, 574, 386, 386, 386, 386, - 386, 386, 386, 386, 386, 389, 531, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 531, 574, 585, 389, - 389, 389, 389, 389, 487, 487, 487, 487, 487, 487, - 487, 487, 493, 493, 493, 493, 493, 493, 493, 493, - 585, 314, 389, 389, 389, 389, 389, 389, 392, 392, + 478, 478, 478, 478, 360, 546, 548, 357, 377, 378, + 378, 378, 378, 378, 378, 378, 378, 378, 472, 480, + 572, 480, 480, 480, 480, 480, 480, 480, 480, 481, + 356, 481, 481, 481, 481, 481, 481, 481, 481, 619, + 619, 338, 572, 378, 386, 574, 386, 386, 386, 386, + 386, 386, 386, 386, 386, 389, 330, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 329, 574, 585, 389, + 389, 389, 389, 389, 482, 328, 482, 482, 482, 482, + 482, 482, 487, 487, 487, 487, 487, 487, 487, 487, + 585, 320, 389, 389, 389, 389, 389, 389, 392, 392, - 392, 392, 392, 392, 392, 392, 392, 311, 310, 291, - 392, 392, 392, 392, 392, 494, 494, 494, 494, 494, - 494, 496, 566, 496, 496, 496, 496, 496, 496, 496, - 496, 290, 566, 392, 392, 392, 392, 392, 392, 403, + 392, 392, 392, 392, 392, 392, 392, 319, 315, 314, + 392, 392, 392, 392, 392, 493, 493, 493, 493, 493, + 493, 493, 493, 496, 311, 496, 496, 496, 496, 496, + 496, 496, 496, 392, 392, 392, 392, 392, 392, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, - 289, 288, 278, 277, 406, 406, 406, 406, 406, 497, + 310, 291, 290, 289, 406, 406, 406, 406, 406, 497, 497, 497, 497, 497, 497, 497, 497, 497, 498, 498, 498, 498, 498, 498, 498, 498, 498, 406, 406, 406, - 406, 406, 406, 423, 276, 423, 423, 423, 423, 423, + 406, 406, 406, 423, 288, 423, 423, 423, 423, 423, 423, 423, 423, 499, 499, 499, 499, 499, 499, 499, - 499, 499, 512, 274, 512, 512, 512, 575, 575, 513, - 273, 513, 513, 513, 272, 271, 270, 269, 423, 424, - 575, 424, 424, 424, 424, 424, 424, 424, 424, 514, - 268, 514, 514, 514, 515, 267, 515, 515, 515, 251, - 518, 250, 518, 518, 518, 249, 248, 246, 245, 512, - 236, 235, 234, 233, 424, 425, 513, 425, 425, 425, - 425, 425, 425, 425, 425, 516, 232, 229, 516, 516, - 516, 516, 516, 516, 516, 516, 514, 227, 226, 225, - 224, 515, 223, 220, 212, 517, 517, 518, 211, 517, + 499, 499, 514, 278, 514, 514, 514, 277, 276, 515, + 274, 515, 515, 515, 273, 272, 271, 270, 423, 424, + 269, 424, 424, 424, 424, 424, 424, 424, 424, 516, + 268, 516, 516, 516, 517, 267, 517, 517, 517, 251, + 520, 250, 520, 520, 520, 249, 248, 246, 245, 514, + 236, 235, 234, 233, 424, 425, 515, 425, 425, 425, + 425, 425, 425, 425, 425, 518, 232, 229, 518, 518, + 518, 518, 518, 518, 518, 518, 516, 227, 226, 225, + 224, 517, 223, 220, 212, 519, 519, 520, 211, 519, 425, 426, 208, 426, 426, 426, 426, 426, 426, 426, - 426, 517, 517, 517, 519, 519, 207, 523, 519, 523, - 523, 523, 523, 523, 523, 523, 523, 200, 199, 193, - 519, 519, 519, 190, 189, 188, 426, 436, 187, 436, + 426, 519, 519, 519, 521, 521, 207, 525, 521, 525, + 525, 525, 525, 525, 525, 525, 525, 200, 199, 193, + 521, 521, 521, 190, 189, 188, 426, 436, 187, 436, 436, 436, 436, 436, 436, 436, 436, 436, 439, 186, 439, 439, 439, 439, 439, 439, 439, 439, 439, 184, - 183, 182, 439, 439, 439, 439, 439, 524, 181, 524, - 524, 524, 524, 524, 524, 524, 524, 530, 530, 530, - 530, 530, 530, 530, 530, 439, 439, 439, 439, 439, + 183, 182, 439, 439, 439, 439, 439, 526, 181, 526, + 526, 526, 526, 526, 526, 526, 526, 532, 532, 532, + 532, 532, 532, 532, 532, 439, 439, 439, 439, 439, 439, 442, 442, 442, 442, 442, 442, 442, 442, 442, - 180, 179, 178, 442, 442, 442, 442, 442, 525, 177, - 525, 525, 525, 525, 525, 525, 525, 525, 536, 536, - 536, 536, 536, 536, 536, 536, 442, 442, 442, 442, + 180, 179, 178, 442, 442, 442, 442, 442, 527, 177, + 527, 527, 527, 527, 527, 527, 527, 527, 538, 538, + 538, 538, 538, 538, 538, 538, 442, 442, 442, 442, 442, 442, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 474, 176, 474, 474, 474, 474, 474, 474, - 474, 474, 537, 537, 537, 537, 537, 537, 538, 175, - 538, 538, 538, 538, 538, 538, 538, 538, 540, 540, - 540, 540, 540, 540, 540, 540, 540, 474, 475, 169, - 475, 475, 475, 475, 475, 475, 475, 475, 541, 541, - 541, 541, 541, 541, 541, 541, 541, 542, 542, 542, + 474, 474, 539, 539, 539, 539, 539, 539, 540, 175, + 540, 540, 540, 540, 540, 540, 540, 540, 542, 542, + 542, 542, 542, 542, 542, 542, 542, 474, 475, 169, + 475, 475, 475, 475, 475, 475, 475, 475, 543, 543, + 543, 543, 543, 543, 543, 543, 543, 544, 544, 544, - 542, 542, 542, 542, 552, 552, 552, 552, 552, 552, + 544, 544, 544, 544, 552, 552, 552, 552, 552, 552, 552, 552, 168, 475, 489, 158, 489, 489, 489, 489, 489, 489, 489, 489, 489, 492, 157, 492, 492, 492, 492, 492, 492, 492, 492, 492, 156, 152, 151, 492, @@ -1262,27 +1262,27 @@ static yyconst short int yy_chk[3732] = 495, 495, 495, 495, 495, 554, 558, 122, 558, 558, 558, 558, 558, 558, 559, 559, 559, 559, 559, 559, - 559, 559, 121, 495, 495, 495, 495, 495, 495, 520, - 120, 520, 520, 520, 520, 520, 520, 520, 520, 119, + 559, 559, 121, 495, 495, 495, 495, 495, 495, 522, + 120, 522, 522, 522, 522, 522, 522, 522, 522, 119, 561, 558, 561, 561, 561, 561, 561, 561, 561, 561, 562, 118, 562, 562, 562, 562, 562, 562, 562, 562, - 113, 112, 111, 110, 520, 521, 108, 521, 521, 521, - 521, 521, 521, 521, 521, 563, 107, 563, 563, 563, + 113, 112, 111, 110, 522, 523, 108, 523, 523, 523, + 523, 523, 523, 523, 523, 563, 107, 563, 563, 563, 563, 563, 563, 569, 106, 569, 569, 569, 569, 569, - 569, 569, 569, 596, 596, 596, 596, 596, 596, 102, - 521, 522, 98, 522, 522, 522, 522, 522, 522, 522, - 522, 579, 579, 579, 579, 579, 579, 579, 579, 580, + 569, 569, 569, 598, 598, 598, 598, 598, 598, 102, + 523, 524, 98, 524, 524, 524, 524, 524, 524, 524, + 524, 579, 579, 579, 579, 579, 579, 579, 579, 580, 580, 580, 580, 580, 580, 580, 580, 581, 581, 581, - 581, 581, 581, 581, 581, 97, 522, 532, 93, 532, - 532, 532, 532, 532, 532, 532, 532, 532, 535, 90, - 535, 535, 535, 535, 535, 535, 535, 535, 82, 81, - 80, 78, 535, 535, 535, 535, 535, 73, 588, 588, - 588, 588, 588, 588, 588, 588, 592, 66, 592, 592, - 592, 592, 592, 592, 59, 535, 535, 535, 535, 535, - 535, 556, 54, 556, 556, 556, 556, 556, 556, 556, - 556, 588, 594, 594, 594, 594, 594, 594, 594, 594, - 51, 592, 595, 595, 595, 595, 595, 595, 595, 595, + 581, 581, 581, 581, 581, 97, 524, 534, 93, 534, + 534, 534, 534, 534, 534, 534, 534, 534, 537, 90, + 537, 537, 537, 537, 537, 537, 537, 537, 82, 81, + 80, 78, 537, 537, 537, 537, 537, 73, 590, 590, + 590, 590, 590, 590, 590, 590, 594, 66, 594, 594, + 594, 594, 594, 594, 59, 537, 537, 537, 537, 537, + 537, 556, 54, 556, 556, 556, 556, 556, 556, 556, + 556, 590, 596, 596, 596, 596, 596, 596, 596, 596, + 51, 594, 597, 597, 597, 597, 597, 597, 597, 597, 49, 41, 40, 39, 38, 37, 556, 557, 36, 557, 557, 557, 557, 557, 557, 557, 557, 33, 29, 23, @@ -1300,15 +1300,15 @@ static yyconst short int yy_chk[3732] = 578, 578, 578, 578, 578, 0, 0, 0, 0, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 578, 590, 0, 590, 590, 590, 590, 590, 590, 590, - 590, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 578, 592, 0, 592, 592, 592, 592, 592, 592, 592, + 592, 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, 590, 591, 0, 591, - 591, 591, 591, 591, 591, 591, 591, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 592, 593, 0, 593, + 593, 593, 593, 593, 593, 593, 593, 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, 591, 607, 607, 607, 607, 607, 607, 607, + 0, 0, 593, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 609, 609, 609, 609, 609, @@ -1366,19 +1366,19 @@ static yyconst short int yy_chk[3732] = 0, 654, 655, 655, 0, 0, 0, 655, 656, 0, 656, 656, 0, 0, 0, 656, 657, 657, 657, 0, 0, 0, 657, 658, 658, 658, 0, 0, 0, 0, - 658, 659, 659, 0, 659, 659, 659, 0, 0, 659, - 659, 659, 0, 0, 659, 659, 659, 660, 660, 0, + 658, 659, 659, 659, 659, 659, 659, 659, 659, 659, + 659, 659, 659, 659, 659, 659, 659, 660, 660, 0, 660, 660, 660, 0, 0, 660, 660, 660, 0, 0, - 660, 660, 660, 661, 661, 0, 0, 0, 661, 662, - 0, 662, 662, 0, 0, 0, 662, 663, 663, 0, + 660, 660, 660, 661, 661, 0, 661, 661, 661, 0, + 0, 661, 661, 661, 0, 0, 661, 661, 661, 662, - 0, 0, 0, 663, 664, 664, 664, 664, 664, 664, - 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, + 662, 0, 0, 0, 662, 663, 0, 663, 663, 0, + 0, 0, 663, 664, 664, 0, 0, 0, 0, 664, 665, 665, 0, 0, 0, 665, 666, 0, 666, 666, 0, 0, 0, 666, 667, 667, 0, 0, 0, 667, - 668, 0, 668, 0, 0, 0, 0, 668, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, - 670, 670, 670, 670, 606, 606, 606, 606, 606, 606, + 668, 0, 668, 0, 0, 0, 0, 668, 669, 669, + 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, + 669, 669, 669, 669, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, @@ -1404,7 +1404,7 @@ char *yytext; #define INITIAL 0 #line 2 "toke.l" /* - * Copyright (c) 1996, 1998-2005, 2007-2011 + * Copyright (c) 1996, 1998-2005, 2007-2012 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -1475,27 +1475,41 @@ char *yytext; #include "parse.h" #include "toke.h" #include +#include "lbuf.h" +#include "secure_path.h" extern YYSTYPE yylval; -extern int parse_error; +extern bool parse_error; +extern bool sudoers_warnings; int sudolineno; +int last_token; char *sudoers; -static int continued, prev_state, sawspace; +/* Default sudoers path, mode and owner (may be set via sudo.conf) */ +const char *sudoers_file = _PATH_SUDOERS; +mode_t sudoers_mode = SUDOERS_MODE; +uid_t sudoers_uid = SUDOERS_UID; +gid_t sudoers_gid = SUDOERS_GID; -static int _push_include(char *, int); -static int pop_include(void); +static bool continued, sawspace; +static int prev_state; + +static bool _push_include(char *, bool); +static bool pop_include(void); static char *parse_include(char *); -#ifdef TRACELEXER static int sudoers_trace_print(const char *msg); -#else -# define sudoers_trace_print NULL -#endif int (*trace_print)(const char *msg) = sudoers_trace_print; -#define push_include(_p) (_push_include((_p), FALSE)) -#define push_includedir(_p) (_push_include((_p), TRUE)) +#define LEXRETURN(n) do { \ + last_token = (n); \ + return (n); \ +} while (0) + +#define ECHO ignore_result(fwrite(yytext, yyleng, 1, yyout)) + +#define push_include(_p) (_push_include((_p), false)) +#define push_includedir(_p) (_push_include((_p), true)) #define YY_NO_INPUT 1 #define YY_NO_UNPUT 1 #define GOTDEFS 1 @@ -1508,7 +1522,7 @@ int (*trace_print)(const char *msg) = sudoers_trace_pr #define INSTR 5 -#line 1511 "lex.yy.c" +#line 1525 "lex.yy.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1662,9 +1676,9 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 119 "toke.l" +#line 133 "toke.l" -#line 1667 "lex.yy.c" +#line 1681 "lex.yy.c" if ( yy_init ) { @@ -1750,65 +1764,65 @@ do_action: /* This label is used only to access EOF ac case 1: YY_RULE_SETUP -#line 120 "toke.l" +#line 134 "toke.l" { LEXTRACE(", "); - return ','; + LEXRETURN(','); } /* return ',' */ YY_BREAK case 2: YY_RULE_SETUP -#line 125 "toke.l" +#line 139 "toke.l" BEGIN STARTDEFS; YY_BREAK case 3: YY_RULE_SETUP -#line 127 "toke.l" +#line 141 "toke.l" { BEGIN INDEFS; LEXTRACE("DEFVAR "); if (!fill(yytext, yyleng)) yyterminate(); - return DEFVAR; + LEXRETURN(DEFVAR); } YY_BREAK case 4: YY_RULE_SETUP -#line 136 "toke.l" +#line 150 "toke.l" { BEGIN STARTDEFS; LEXTRACE(", "); - return ','; + LEXRETURN(','); } /* return ',' */ YY_BREAK case 5: YY_RULE_SETUP -#line 142 "toke.l" +#line 156 "toke.l" { LEXTRACE("= "); - return '='; + LEXRETURN('='); } /* return '=' */ YY_BREAK case 6: YY_RULE_SETUP -#line 147 "toke.l" +#line 161 "toke.l" { LEXTRACE("+= "); - return '+'; + LEXRETURN('+'); } /* return '+' */ YY_BREAK case 7: YY_RULE_SETUP -#line 152 "toke.l" +#line 166 "toke.l" { LEXTRACE("-= "); - return '-'; + LEXRETURN('-'); } /* return '-' */ YY_BREAK case 8: YY_RULE_SETUP -#line 157 "toke.l" +#line 171 "toke.l" { LEXTRACE("BEGINSTR "); yylval.string = NULL; @@ -1818,35 +1832,35 @@ YY_RULE_SETUP YY_BREAK case 9: YY_RULE_SETUP -#line 164 "toke.l" +#line 178 "toke.l" { LEXTRACE("WORD(2) "); if (!fill(yytext, yyleng)) yyterminate(); - return WORD; + LEXRETURN(WORD); } YY_BREAK case 10: YY_RULE_SETUP -#line 173 "toke.l" +#line 187 "toke.l" { /* Line continuation char followed by newline. */ - ++sudolineno; - continued = TRUE; + sudolineno++; + continued = true; } YY_BREAK case 11: YY_RULE_SETUP -#line 179 "toke.l" +#line 193 "toke.l" { LEXTRACE("ENDSTR "); BEGIN prev_state; if (yylval.string == NULL) { LEXTRACE("ERROR "); /* empty string */ - return ERROR; + LEXRETURN(ERROR); } if (prev_state == INITIAL) { switch (yylval.string[0]) { @@ -1855,26 +1869,26 @@ YY_RULE_SETUP (yylval.string[1] == ':' && yylval.string[2] == '\0')) { LEXTRACE("ERROR "); /* empty group */ - return ERROR; + LEXRETURN(ERROR); } LEXTRACE("USERGROUP "); - return USERGROUP; + LEXRETURN(USERGROUP); case '+': if (yylval.string[1] == '\0') { LEXTRACE("ERROR "); /* empty netgroup */ - return ERROR; + LEXRETURN(ERROR); } LEXTRACE("NETGROUP "); - return NETGROUP; + LEXRETURN(NETGROUP); } } LEXTRACE("WORD(4) "); - return WORD; + LEXRETURN(WORD); } YY_BREAK case 12: YY_RULE_SETUP -#line 211 "toke.l" +#line 225 "toke.l" { LEXTRACE("BACKSLASH "); if (!append(yytext, yyleng)) @@ -1883,7 +1897,7 @@ YY_RULE_SETUP YY_BREAK case 13: YY_RULE_SETUP -#line 217 "toke.l" +#line 231 "toke.l" { LEXTRACE("STRBODY "); if (!append(yytext, yyleng)) @@ -1894,55 +1908,55 @@ YY_RULE_SETUP case 14: YY_RULE_SETUP -#line 225 "toke.l" +#line 239 "toke.l" { /* quoted fnmatch glob char, pass verbatim */ LEXTRACE("QUOTEDCHAR "); if (!fill_args(yytext, 2, sawspace)) yyterminate(); - sawspace = FALSE; + sawspace = false; } YY_BREAK case 15: YY_RULE_SETUP -#line 233 "toke.l" +#line 247 "toke.l" { /* quoted sudoers special char, strip backslash */ LEXTRACE("QUOTEDCHAR "); if (!fill_args(yytext + 1, 1, sawspace)) yyterminate(); - sawspace = FALSE; + sawspace = false; } YY_BREAK case 16: YY_RULE_SETUP -#line 241 "toke.l" +#line 255 "toke.l" { BEGIN INITIAL; yyless(0); - return COMMAND; + LEXRETURN(COMMAND); } /* end of command line args */ YY_BREAK case 17: YY_RULE_SETUP -#line 247 "toke.l" +#line 261 "toke.l" { LEXTRACE("ARG "); if (!fill_args(yytext, yyleng, sawspace)) yyterminate(); - sawspace = FALSE; + sawspace = false; } /* a command line arg */ YY_BREAK case 18: YY_RULE_SETUP -#line 255 "toke.l" +#line 269 "toke.l" { char *path; if (continued) { LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } if ((path = parse_include(yytext)) == NULL) @@ -1957,13 +1971,13 @@ YY_RULE_SETUP YY_BREAK case 19: YY_RULE_SETUP -#line 273 "toke.l" +#line 287 "toke.l" { char *path; if (continued) { LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } if ((path = parse_include(yytext)) == NULL) @@ -1981,14 +1995,14 @@ YY_RULE_SETUP YY_BREAK case 20: YY_RULE_SETUP -#line 294 "toke.l" +#line 308 "toke.l" { char deftype; int n; if (continued) { LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } for (n = 0; isblank((unsigned char)yytext[n]); n++) @@ -2003,34 +2017,34 @@ YY_RULE_SETUP case ':': yyless(n); LEXTRACE("DEFAULTS_USER "); - return DEFAULTS_USER; + LEXRETURN(DEFAULTS_USER); case '>': yyless(n); LEXTRACE("DEFAULTS_RUNAS "); - return DEFAULTS_RUNAS; + LEXRETURN(DEFAULTS_RUNAS); case '@': yyless(n); LEXTRACE("DEFAULTS_HOST "); - return DEFAULTS_HOST; + LEXRETURN(DEFAULTS_HOST); case '!': yyless(n); LEXTRACE("DEFAULTS_CMND "); - return DEFAULTS_CMND; + LEXRETURN(DEFAULTS_CMND); default: LEXTRACE("DEFAULTS "); - return DEFAULTS; + LEXRETURN(DEFAULTS); } } YY_BREAK case 21: YY_RULE_SETUP -#line 334 "toke.l" +#line 348 "toke.l" { int n; if (continued) { LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } for (n = 0; isblank((unsigned char)yytext[n]); n++) @@ -2038,196 +2052,196 @@ YY_RULE_SETUP switch (yytext[n]) { case 'H': LEXTRACE("HOSTALIAS "); - return HOSTALIAS; + LEXRETURN(HOSTALIAS); case 'C': LEXTRACE("CMNDALIAS "); - return CMNDALIAS; + LEXRETURN(CMNDALIAS); case 'U': LEXTRACE("USERALIAS "); - return USERALIAS; + LEXRETURN(USERALIAS); case 'R': LEXTRACE("RUNASALIAS "); - return RUNASALIAS; + LEXRETURN(RUNASALIAS); } } YY_BREAK case 22: YY_RULE_SETUP -#line 360 "toke.l" +#line 374 "toke.l" { /* cmnd does not require passwd for this user */ LEXTRACE("NOPASSWD "); - return NOPASSWD; + LEXRETURN(NOPASSWD); } YY_BREAK case 23: YY_RULE_SETUP -#line 366 "toke.l" +#line 380 "toke.l" { /* cmnd requires passwd for this user */ LEXTRACE("PASSWD "); - return PASSWD; + LEXRETURN(PASSWD); } YY_BREAK case 24: YY_RULE_SETUP -#line 372 "toke.l" +#line 386 "toke.l" { LEXTRACE("NOEXEC "); - return NOEXEC; + LEXRETURN(NOEXEC); } YY_BREAK case 25: YY_RULE_SETUP -#line 377 "toke.l" +#line 391 "toke.l" { LEXTRACE("EXEC "); - return EXEC; + LEXRETURN(EXEC); } YY_BREAK case 26: YY_RULE_SETUP -#line 382 "toke.l" +#line 396 "toke.l" { LEXTRACE("SETENV "); - return SETENV; + LEXRETURN(SETENV); } YY_BREAK case 27: YY_RULE_SETUP -#line 387 "toke.l" +#line 401 "toke.l" { LEXTRACE("NOSETENV "); - return NOSETENV; + LEXRETURN(NOSETENV); } YY_BREAK case 28: YY_RULE_SETUP -#line 392 "toke.l" +#line 406 "toke.l" { LEXTRACE("LOG_OUTPUT "); - return LOG_OUTPUT; + LEXRETURN(LOG_OUTPUT); } YY_BREAK case 29: YY_RULE_SETUP -#line 397 "toke.l" +#line 411 "toke.l" { LEXTRACE("NOLOG_OUTPUT "); - return NOLOG_OUTPUT; + LEXRETURN(NOLOG_OUTPUT); } YY_BREAK case 30: YY_RULE_SETUP -#line 402 "toke.l" +#line 416 "toke.l" { LEXTRACE("LOG_INPUT "); - return LOG_INPUT; + LEXRETURN(LOG_INPUT); } YY_BREAK case 31: YY_RULE_SETUP -#line 407 "toke.l" +#line 421 "toke.l" { LEXTRACE("NOLOG_INPUT "); - return NOLOG_INPUT; + LEXRETURN(NOLOG_INPUT); } YY_BREAK case 32: YY_RULE_SETUP -#line 412 "toke.l" +#line 426 "toke.l" { /* empty group or netgroup */ LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } YY_BREAK case 33: YY_RULE_SETUP -#line 418 "toke.l" +#line 432 "toke.l" { /* netgroup */ if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("NETGROUP "); - return NETGROUP; + LEXRETURN(NETGROUP); } YY_BREAK case 34: YY_RULE_SETUP -#line 426 "toke.l" +#line 440 "toke.l" { /* group */ if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("USERGROUP "); - return USERGROUP; + LEXRETURN(USERGROUP); } YY_BREAK case 35: YY_RULE_SETUP -#line 434 "toke.l" +#line 448 "toke.l" { if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("NTWKADDR "); - return NTWKADDR; + LEXRETURN(NTWKADDR); } YY_BREAK case 36: YY_RULE_SETUP -#line 441 "toke.l" +#line 455 "toke.l" { if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("NTWKADDR "); - return NTWKADDR; + LEXRETURN(NTWKADDR); } YY_BREAK case 37: YY_RULE_SETUP -#line 448 "toke.l" +#line 462 "toke.l" { if (!ipv6_valid(yytext)) { LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("NTWKADDR "); - return NTWKADDR; + LEXRETURN(NTWKADDR); } YY_BREAK case 38: YY_RULE_SETUP -#line 459 "toke.l" +#line 473 "toke.l" { if (!ipv6_valid(yytext)) { LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("NTWKADDR "); - return NTWKADDR; + LEXRETURN(NTWKADDR); } YY_BREAK case 39: YY_RULE_SETUP -#line 470 "toke.l" +#line 484 "toke.l" { LEXTRACE("ALL "); - return ALL; + LEXRETURN(ALL); } YY_BREAK case 40: YY_RULE_SETUP -#line 476 "toke.l" +#line 490 "toke.l" { #ifdef HAVE_SELINUX LEXTRACE("ROLE "); - return ROLE; + LEXRETURN(ROLE); #else goto got_alias; #endif @@ -2235,11 +2249,11 @@ YY_RULE_SETUP YY_BREAK case 41: YY_RULE_SETUP -#line 485 "toke.l" +#line 499 "toke.l" { #ifdef HAVE_SELINUX LEXTRACE("TYPE "); - return TYPE; + LEXRETURN(TYPE); #else goto got_alias; #endif @@ -2247,7 +2261,7 @@ YY_RULE_SETUP YY_BREAK case 42: YY_RULE_SETUP -#line 494 "toke.l" +#line 508 "toke.l" { #ifndef HAVE_SELINUX got_alias: @@ -2255,23 +2269,23 @@ YY_RULE_SETUP if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("ALIAS "); - return ALIAS; + LEXRETURN(ALIAS); } YY_BREAK case 43: YY_RULE_SETUP -#line 504 "toke.l" +#line 518 "toke.l" { /* no command args allowed for Defaults!/path */ if (!fill_cmnd(yytext, yyleng)) yyterminate(); LEXTRACE("COMMAND "); - return COMMAND; + LEXRETURN(COMMAND); } YY_BREAK case 44: YY_RULE_SETUP -#line 512 "toke.l" +#line 526 "toke.l" { BEGIN GOTCMND; LEXTRACE("COMMAND "); @@ -2281,14 +2295,14 @@ YY_RULE_SETUP YY_BREAK case 45: YY_RULE_SETUP -#line 519 "toke.l" +#line 533 "toke.l" { /* directories can't have args... */ if (yytext[yyleng - 1] == '/') { LEXTRACE("COMMAND "); if (!fill_cmnd(yytext, yyleng)) yyterminate(); - return COMMAND; + LEXRETURN(COMMAND); } else { BEGIN GOTCMND; LEXTRACE("COMMAND "); @@ -2299,7 +2313,7 @@ YY_RULE_SETUP YY_BREAK case 46: YY_RULE_SETUP -#line 534 "toke.l" +#line 548 "toke.l" { LEXTRACE("BEGINSTR "); yylval.string = NULL; @@ -2309,113 +2323,113 @@ YY_RULE_SETUP YY_BREAK case 47: YY_RULE_SETUP -#line 541 "toke.l" +#line 555 "toke.l" { /* a word */ if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("WORD(5) "); - return WORD; + LEXRETURN(WORD); } YY_BREAK case 48: YY_RULE_SETUP -#line 549 "toke.l" +#line 563 "toke.l" { LEXTRACE("( "); - return '('; + LEXRETURN('('); } YY_BREAK case 49: YY_RULE_SETUP -#line 554 "toke.l" +#line 568 "toke.l" { LEXTRACE(") "); - return ')'; + LEXRETURN(')'); } YY_BREAK case 50: YY_RULE_SETUP -#line 559 "toke.l" +#line 573 "toke.l" { LEXTRACE(", "); - return ','; + LEXRETURN(','); } /* return ',' */ YY_BREAK case 51: YY_RULE_SETUP -#line 564 "toke.l" +#line 578 "toke.l" { LEXTRACE("= "); - return '='; + LEXRETURN('='); } /* return '=' */ YY_BREAK case 52: YY_RULE_SETUP -#line 569 "toke.l" +#line 583 "toke.l" { LEXTRACE(": "); - return ':'; + LEXRETURN(':'); } /* return ':' */ YY_BREAK case 53: YY_RULE_SETUP -#line 574 "toke.l" +#line 588 "toke.l" { if (yyleng & 1) { LEXTRACE("!"); - return '!'; /* return '!' */ + LEXRETURN('!'); /* return '!' */ } } YY_BREAK case 54: YY_RULE_SETUP -#line 581 "toke.l" +#line 595 "toke.l" { if (YY_START == INSTR) { LEXTRACE("ERROR "); - return ERROR; /* line break in string */ + LEXRETURN(ERROR); /* line break in string */ } BEGIN INITIAL; - ++sudolineno; - continued = FALSE; + sudolineno++; + continued = false; LEXTRACE("\n"); - return COMMENT; + LEXRETURN(COMMENT); } /* return newline */ YY_BREAK case 55: YY_RULE_SETUP -#line 593 "toke.l" +#line 607 "toke.l" { /* throw away space/tabs */ - sawspace = TRUE; /* but remember for fill_args */ + sawspace = true; /* but remember for fill_args */ } YY_BREAK case 56: YY_RULE_SETUP -#line 597 "toke.l" +#line 611 "toke.l" { - sawspace = TRUE; /* remember for fill_args */ - ++sudolineno; - continued = TRUE; + sawspace = true; /* remember for fill_args */ + sudolineno++; + continued = true; } /* throw away EOL after \ */ YY_BREAK case 57: YY_RULE_SETUP -#line 603 "toke.l" +#line 617 "toke.l" { BEGIN INITIAL; - ++sudolineno; - continued = FALSE; + sudolineno++; + continued = false; LEXTRACE("#\n"); - return COMMENT; + LEXRETURN(COMMENT); } /* comment, not uid/gid */ YY_BREAK case 58: YY_RULE_SETUP -#line 611 "toke.l" +#line 625 "toke.l" { LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } /* parse error */ YY_BREAK case YY_STATE_EOF(INITIAL): @@ -2424,12 +2438,12 @@ case YY_STATE_EOF(GOTCMND): case YY_STATE_EOF(STARTDEFS): case YY_STATE_EOF(INDEFS): case YY_STATE_EOF(INSTR): -#line 616 "toke.l" +#line 630 "toke.l" { if (YY_START != INITIAL) { BEGIN INITIAL; LEXTRACE("ERROR "); - return ERROR; + LEXRETURN(ERROR); } if (!pop_include()) yyterminate(); @@ -2437,10 +2451,10 @@ case YY_STATE_EOF(INSTR): YY_BREAK case 59: YY_RULE_SETUP -#line 626 "toke.l" +#line 640 "toke.l" ECHO; YY_BREAK -#line 2443 "lex.yy.c" +#line 2457 "lex.yy.c" case YY_END_OF_BUFFER: { @@ -3331,7 +3345,7 @@ int main() return 0; } #endif -#line 626 "toke.l" +#line 640 "toke.l" struct path_list { char *path; @@ -3343,7 +3357,7 @@ struct include_stack { char *path; struct path_list *more; /* more files in case of includedir */ int lineno; - int keepopen; + bool keepopen; }; static int @@ -3365,6 +3379,7 @@ switch_dir(struct include_stack *stack, char *dirpath) struct stat sb; struct path_list *pl, *first = NULL; struct path_list **sorted = NULL; + debug_decl(switch_dir, SUDO_DEBUG_PARSER) if (!(dir = opendir(dirpath))) { if (errno != ENOENT) { @@ -3435,7 +3450,7 @@ switch_dir(struct include_stack *stack, char *dirpath) } done: efree(dirpath); - return path; + debug_return_str(path); bad: while (first != NULL) { pl = first; @@ -3446,7 +3461,7 @@ bad: efree(sorted); efree(dirpath); efree(path); - return NULL; + debug_return_str(NULL); } #define MAX_SUDOERS_DEPTH 128 @@ -3454,12 +3469,13 @@ bad: static size_t istacksize, idepth; static struct include_stack *istack; -static int keepopen; +static bool keepopen; void init_lexer(void) { struct path_list *pl; + debug_decl(init_lexer, SUDO_DEBUG_PARSER) while (idepth) { idepth--; @@ -3477,48 +3493,86 @@ init_lexer(void) istack = NULL; istacksize = idepth = 0; sudolineno = 1; - keepopen = FALSE; - sawspace = FALSE; - continued = FALSE; + keepopen = false; + sawspace = false; + continued = false; prev_state = INITIAL; + + debug_return; } -static int -_push_include(char *path, int isdir) +static bool +_push_include(char *path, bool isdir) { struct path_list *pl; FILE *fp; + debug_decl(_push_include, SUDO_DEBUG_PARSER) /* push current state onto stack */ if (idepth >= istacksize) { if (idepth > MAX_SUDOERS_DEPTH) { yyerror(_("too many levels of includes")); - return FALSE; + debug_return_bool(false); } istacksize += SUDOERS_STACK_INCREMENT; istack = (struct include_stack *) realloc(istack, sizeof(*istack) * istacksize); if (istack == NULL) { yyerror(_("unable to allocate memory")); - return FALSE; + debug_return_bool(false); } } if (isdir) { + struct stat sb; + switch (sudo_secure_dir(path, sudoers_uid, sudoers_gid, &sb)) { + case SUDO_PATH_SECURE: + break; + case SUDO_PATH_MISSING: + debug_return_bool(false); + case SUDO_PATH_BAD_TYPE: + errno = ENOTDIR; + if (sudoers_warnings) { + warning("%s", path); + } + debug_return_bool(false); + case SUDO_PATH_WRONG_OWNER: + if (sudoers_warnings) { + warningx(_("%s is owned by uid %u, should be %u"), + path, (unsigned int) sb.st_uid, + (unsigned int) sudoers_uid); + } + debug_return_bool(false); + case SUDO_PATH_WORLD_WRITABLE: + if (sudoers_warnings) { + warningx(_("%s is world writable"), path); + } + debug_return_bool(false); + case SUDO_PATH_GROUP_WRITABLE: + if (sudoers_warnings) { + warningx(_("%s is owned by gid %u, should be %u"), + path, (unsigned int) sb.st_gid, + (unsigned int) sudoers_gid); + } + debug_return_bool(false); + default: + /* NOTREACHED */ + debug_return_bool(false); + } if (!(path = switch_dir(&istack[idepth], path))) { /* switch_dir() called yyerror() for us */ - return FALSE; + debug_return_bool(false); } - while ((fp = open_sudoers(path, FALSE, &keepopen)) == NULL) { + while ((fp = open_sudoers(path, false, &keepopen)) == NULL) { /* Unable to open path in includedir, go to next one, if any. */ efree(path); if ((pl = istack[idepth].more) == NULL) - return FALSE; + debug_return_bool(false); path = pl->path; istack[idepth].more = pl->next; efree(pl); } } else { - if ((fp = open_sudoers(path, TRUE, &keepopen)) == NULL) { + if ((fp = open_sudoers(path, true, &keepopen)) == NULL) { char *errbuf; if (asprintf(&errbuf, _("%s: %s"), path, strerror(errno)) != -1) { yyerror(errbuf); @@ -3526,7 +3580,7 @@ _push_include(char *path, int isdir) } else { yyerror(_("unable to allocate memory")); } - return FALSE; + debug_return_bool(false); } istack[idepth].more = NULL; } @@ -3540,24 +3594,25 @@ _push_include(char *path, int isdir) sudoers = path; yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE)); - return TRUE; + debug_return_bool(true); } -static int +static bool pop_include(void) { struct path_list *pl; FILE *fp; + debug_decl(pop_include, SUDO_DEBUG_PARSER) if (idepth == 0) - return FALSE; + debug_return_bool(false); if (!keepopen) fclose(YY_CURRENT_BUFFER->yy_input_file); yy_delete_buffer(YY_CURRENT_BUFFER); /* If we are in an include dir, move to the next file. */ while ((pl = istack[idepth - 1].more) != NULL) { - fp = open_sudoers(pl->path, FALSE, &keepopen); + fp = open_sudoers(pl->path, false, &keepopen); if (fp != NULL) { istack[idepth - 1].more = pl->next; efree(sudoers); @@ -3581,15 +3636,16 @@ pop_include(void) sudolineno = istack[idepth].lineno; keepopen = istack[idepth].keepopen; } - return TRUE; + debug_return_bool(true); } static char * parse_include(char *base) { - char *cp, *ep, *path; - int len = 0, subst = 0; + char *cp, *ep, *path, *pp; + int dirlen = 0, len = 0, subst = 0; size_t shost_len = 0; + debug_decl(parse_include, SUDO_DEBUG_PARSER) /* Pull out path from #include line. */ cp = base + sizeof("#include"); @@ -3607,15 +3663,26 @@ parse_include(char *base) ep++; } - /* Make a copy of path and return it. */ + /* Relative paths are located in the same dir as the sudoers file. */ + if (*cp != '/') { + char *dirend = strrchr(sudoers, '/'); + if (dirend != NULL) + dirlen = (int)(dirend - sudoers) + 1; + } + + /* Make a copy of the fully-qualified path and return it. */ len += (int)(ep - cp); - if ((path = malloc(len + 1)) == NULL) { + path = pp = malloc(len + dirlen + 1); + if (path == NULL) { yyerror(_("unable to allocate memory")); - return NULL; + debug_return_str(NULL); } + if (dirlen) { + memcpy(path, sudoers, dirlen); + pp += dirlen; + } if (subst) { /* substitute for %h */ - char *pp = path; while (cp < ep) { if (cp[0] == '%' && cp[1] == 'h') { memcpy(pp, user_shost, shost_len); @@ -3627,15 +3694,15 @@ parse_include(char *base) } *pp = '\0'; } else { - memcpy(path, cp, len); - path[len] = '\0'; + memcpy(pp, cp, len); + pp[len] = '\0'; } /* Push any excess characters (e.g. comment, newline) back to the lexer */ if (*ep != '\0') yyless((int)(ep - base)); - return path; + debug_return_str(path); } #ifdef TRACELEXER @@ -3643,5 +3710,27 @@ static int sudoers_trace_print(const char *msg) { return fputs(msg, stderr); +} +#else +static int +sudoers_trace_print(const char *msg) +{ + static bool initialized; + static struct lbuf lbuf; + + if (!initialized) { + initialized = true; + lbuf_init(&lbuf, NULL, 0, NULL, 0); + } + + lbuf_append(&lbuf, "%s", msg); + /* XXX - assumes a final newline */ + if (strchr(msg, '\n') != NULL) + { + sudo_debug_printf2(NULL, NULL, 0, SUDO_DEBUG_PARSER|SUDO_DEBUG_DEBUG, + "%s:%d %s", sudoers, sudolineno, lbuf.buf); + lbuf.len = 0; + } + return 0; } #endif /* TRACELEXER */