From f3938a61d4596d3e0cfdb3dabcba1af3f308c466 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Thu, 12 Jan 2012 10:39:49 -0500 Subject: [PATCH] Add support for relative paths in #include and #includedir --HG-- branch : 1.7 --- sudoers.pod | 15 +- toke.c | 607 ++++++++++++++++++++++++++-------------------------- toke.l | 31 ++- 3 files changed, 344 insertions(+), 309 deletions(-) diff --git a/sudoers.pod b/sudoers.pod index a5695cd0e..5a84a40f3 100644 --- a/sudoers.pod +++ b/sudoers.pod @@ -555,7 +555,20 @@ F will be processed. Files that are included may themselves include other files. A hard limit of 128 nested include files is enforced to prevent include file loops. -The file name may include the C<%h> escape, signifying the short form +If the path to the include file is not fully-qualified (does not +begin with a F), it must be located in the same directory as the +sudoers file it was included from. For example, if F +contains the line: + +=over 4 + +C<#include sudoers.local> + +=back + +the file that will be included is F. + +The file name may also include the C<%h> escape, signifying the short form of the host name. I.e., if the machine's host name is "xerxes", then C<#include /etc/sudoers.%h> diff --git a/toke.c b/toke.c index 63015a43a..46623dbbf 100644 --- a/toke.c +++ b/toke.c @@ -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, - - 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, + 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, 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, - - 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, + 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, + + 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, - - 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, - - 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, + 376, 376, 376, 546, 572, 522, 523, 524, 522, 522, + 522, 522, 522, 79, 413, 79, 525, 526, 527, 525, + + 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, 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, - - 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, + 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, 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, - - 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, + 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, + + 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, - - 606, 606, 606, 543, 549, 549, 549, 549, 549, 549, - 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, + 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, + + 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, - - 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, - - 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, + 377, 377, 377, 546, 548, 472, 472, 472, 472, 472, + 472, 472, 472, 591, 361, 476, 478, 478, 478, 478, + + 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, 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-2010 + * Copyright (c) 1996, 1998-2005, 2007-2011 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -3599,8 +3599,8 @@ static char * parse_include(base) 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; /* Pull out path from #include line. */ @@ -3619,15 +3619,26 @@ parse_include(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; } + 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); @@ -3639,8 +3650,8 @@ parse_include(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 */ diff --git a/toke.l b/toke.l index cc89d0be0..2b151a0c6 100644 --- a/toke.l +++ b/toke.l @@ -1,6 +1,6 @@ %{ /* - * Copyright (c) 1996, 1998-2005, 2007-2010 + * Copyright (c) 1996, 1998-2005, 2007-2011 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -259,7 +259,7 @@ DEFVAR [a-z_]+ } /* a command line arg */ } -^#include[[:blank:]]+\/.*\n { +^#include[[:blank:]]+.*\n { char *path; if (continued) { @@ -277,7 +277,7 @@ DEFVAR [a-z_]+ yyterminate(); } -^#includedir[[:blank:]]+\/.*\n { +^#includedir[[:blank:]]+.*\n { char *path; if (continued) { @@ -890,8 +890,8 @@ static char * parse_include(base) 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; /* Pull out path from #include line. */ @@ -910,15 +910,26 @@ parse_include(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; } + 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); @@ -930,8 +941,8 @@ parse_include(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 */ -- 2.50.1