From 736359cceac551a0c95d306ce521e7123d9059c4 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Sun, 7 Mar 1999 23:34:31 +0000 Subject: [PATCH] Fix a bug wrt quoting characters in command args. Stop processing an arg when you hit a backslash so the quoted-character detection can catch it. --- CHANGES | 2 + lex.yy.c | 345 +++++++++++++++++++++++++++--------------------------- parse.lex | 2 +- 3 files changed, 175 insertions(+), 174 deletions(-) diff --git a/CHANGES b/CHANGES index 3744c794e..f63aaa5c8 100644 --- a/CHANGES +++ b/CHANGES @@ -1021,3 +1021,5 @@ Sudo 1.5.8 released. 320) Minor configure fixes. Sudo 1.5.8p1 released. + +321) Fixed a bug wrt quoting characters in command args. diff --git a/lex.yy.c b/lex.yy.c index 4473dcfe7..4afc4cd26 100644 --- a/lex.yy.c +++ b/lex.yy.c @@ -286,26 +286,26 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); #define YY_NUM_RULES 26 #define YY_END_OF_BUFFER 27 -static yyconst short int yy_accept[163] = +static yyconst short int yy_accept[162] = { 0, 0, 0, 0, 0, 0, 0, 27, 25, 1, 5, 9, 25, 25, 18, 25, 8, 12, 25, 24, 11, 10, 23, 23, 25, 24, 7, 4, 7, 7, 7, - 4, 7, 7, 7, 4, 4, 7, 7, 7, 7, + 4, 7, 7, 7, 4, 4, 7, 7, 25, 7, 25, 21, 20, 20, 19, 19, 20, 1, 0, 6, 15, 14, 22, 24, 0, 24, 24, 0, 23, 23, 0, 2, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 3, 3, 3, 20, 20, 20, 20, - 19, 19, 0, 24, 17, 23, 7, 7, 7, 7, - 20, 19, 0, 0, 23, 7, 7, 7, 19, 0, - - 0, 23, 7, 7, 7, 19, 0, 0, 23, 7, - 7, 7, 19, 16, 0, 23, 7, 7, 7, 19, - 0, 16, 23, 7, 7, 7, 19, 0, 16, 0, - 13, 7, 7, 0, 0, 7, 7, 0, 0, 7, - 7, 0, 0, 7, 7, 0, 0, 7, 7, 0, - 0, 7, 7, 16, 0, 7, 7, 16, 7, 16, - 7, 0 + 7, 7, 7, 3, 3, 20, 20, 20, 20, 19, + 19, 0, 24, 17, 23, 7, 7, 7, 7, 20, + 19, 0, 0, 23, 7, 7, 7, 19, 0, 0, + + 23, 7, 7, 7, 19, 0, 0, 23, 7, 7, + 7, 19, 16, 0, 23, 7, 7, 7, 19, 0, + 16, 23, 7, 7, 7, 19, 0, 16, 0, 13, + 7, 7, 0, 0, 7, 7, 0, 0, 7, 7, + 0, 0, 7, 7, 0, 0, 7, 7, 0, 0, + 7, 7, 16, 0, 7, 7, 16, 7, 16, 7, + 0 } ; static yyconst int yy_ec[256] = @@ -343,57 +343,57 @@ static yyconst int yy_ec[256] = static yyconst int yy_meta[28] = { 0, 1, 2, 2, 1, 3, 1, 1, 1, 1, 2, - 4, 5, 1, 4, 2, 3, 4, 4, 4, 4, - 4, 4, 4, 4, 3, 4, 4 + 4, 5, 1, 4, 2, 6, 4, 4, 4, 4, + 4, 4, 4, 4, 2, 4, 4 } ; static yyconst short int yy_base[177] = { 0, - 0, 0, 27, 0, 54, 0, 418, 419, 415, 419, - 419, 413, 0, 419, 0, 419, 419, 0, 70, 419, - 419, 74, 76, 87, 403, 0, 419, 0, 103, 130, - 419, 0, 153, 178, 419, 0, 205, 393, 231, 243, - 0, 419, 0, 79, 148, 150, 401, 410, 408, 419, - 0, 0, 0, 398, 395, 80, 396, 0, 386, 74, - 96, 419, 0, 0, 0, 233, 88, 392, 391, 0, - 269, 0, 382, 103, 419, 0, 0, 391, 151, 390, - 380, 111, 152, 388, 387, 151, 162, 384, 385, 379, - 383, 218, 380, 228, 222, 379, 236, 369, 230, 240, - - 379, 276, 286, 378, 366, 280, 374, 290, 146, 373, - 293, 362, 247, 167, 373, 287, 194, 372, 364, 290, - 368, 223, 308, 367, 299, 257, 312, 303, 367, 316, - 419, 307, 366, 355, 308, 350, 312, 316, 342, 320, - 341, 311, 323, 302, 324, 327, 272, 328, 267, 241, - 331, 230, 332, 206, 203, 179, 176, 159, 131, 419, - 0, 419, 346, 136, 114, 351, 353, 355, 357, 362, - 367, 109, 369, 371, 373, 79 + 0, 0, 27, 0, 54, 0, 412, 413, 409, 413, + 413, 407, 0, 413, 0, 413, 413, 0, 70, 413, + 413, 74, 76, 87, 397, 0, 413, 0, 103, 130, + 413, 0, 78, 157, 413, 0, 184, 387, 89, 198, + 0, 413, 0, 81, 202, 214, 395, 404, 402, 413, + 0, 0, 0, 392, 389, 84, 390, 0, 380, 78, + 103, 413, 0, 0, 0, 97, 216, 386, 385, 0, + 241, 0, 376, 130, 413, 0, 385, 219, 384, 374, + 138, 220, 382, 381, 165, 224, 378, 379, 373, 377, + 206, 374, 225, 248, 373, 258, 363, 252, 262, 373, + + 256, 266, 372, 360, 260, 368, 270, 219, 367, 273, + 356, 265, 277, 360, 273, 282, 359, 351, 278, 350, + 287, 291, 344, 289, 296, 302, 293, 335, 306, 413, + 301, 334, 324, 302, 305, 306, 310, 298, 313, 297, + 274, 314, 252, 317, 318, 244, 321, 239, 230, 322, + 195, 325, 185, 182, 173, 160, 153, 141, 413, 0, + 413, 339, 141, 136, 345, 347, 349, 351, 356, 362, + 367, 124, 370, 372, 374, 114 } ; static yyconst short int yy_def[177] = { 0, - 162, 1, 162, 3, 162, 5, 162, 162, 162, 162, - 162, 163, 164, 162, 165, 162, 162, 166, 167, 162, - 162, 168, 168, 162, 169, 170, 162, 170, 162, 162, - 162, 170, 171, 162, 162, 170, 162, 37, 170, 37, - 172, 162, 172, 173, 174, 174, 175, 162, 163, 162, - 164, 165, 166, 167, 162, 167, 169, 176, 23, 23, - 162, 162, 170, 29, 30, 171, 34, 170, 34, 40, - 162, 37, 37, 162, 162, 170, 172, 173, 173, 175, - 46, 46, 162, 167, 176, 23, 170, 34, 71, 37, - 173, 46, 162, 162, 23, 170, 170, 37, 46, 162, - - 162, 23, 170, 170, 37, 46, 162, 162, 23, 170, - 170, 37, 46, 162, 162, 23, 170, 170, 37, 46, - 162, 162, 23, 170, 170, 37, 46, 162, 162, 162, - 162, 170, 170, 162, 162, 170, 170, 162, 162, 170, - 170, 162, 162, 170, 170, 162, 162, 170, 170, 162, - 162, 170, 170, 162, 162, 170, 170, 162, 170, 162, - 170, 0, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162 + 161, 1, 161, 3, 161, 5, 161, 161, 161, 161, + 161, 162, 163, 161, 164, 161, 161, 165, 166, 161, + 161, 167, 167, 161, 168, 169, 161, 169, 161, 161, + 161, 169, 170, 161, 161, 169, 161, 37, 171, 37, + 172, 161, 172, 173, 174, 174, 175, 161, 162, 161, + 163, 164, 165, 166, 161, 166, 168, 176, 23, 23, + 161, 161, 169, 29, 30, 170, 34, 169, 34, 40, + 161, 37, 37, 161, 161, 172, 173, 173, 175, 46, + 46, 161, 166, 176, 23, 169, 34, 71, 37, 173, + 46, 161, 161, 23, 169, 169, 37, 46, 161, 161, + + 23, 169, 169, 37, 46, 161, 161, 23, 169, 169, + 37, 46, 161, 161, 23, 169, 169, 37, 46, 161, + 161, 23, 169, 169, 37, 46, 161, 161, 161, 161, + 169, 169, 161, 161, 169, 169, 161, 161, 169, 169, + 161, 161, 169, 169, 161, 161, 169, 169, 161, 161, + 169, 169, 161, 161, 169, 169, 161, 169, 161, 169, + 0, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161 } ; -static yyconst short int yy_nxt[447] = +static yyconst short int yy_nxt[441] = { 0, 8, 9, 10, 11, 12, 13, 14, 8, 15, 16, 8, 17, 18, 19, 20, 21, 22, 22, 22, 23, @@ -403,50 +403,49 @@ static yyconst short int yy_nxt[447] = 37, 39, 26, 40, 8, 9, 10, 11, 41, 13, 8, 42, 15, 16, 43, 17, 18, 44, 20, 21, 45, 45, 45, 46, 45, 45, 45, 45, 24, 43, - 47, 55, 85, 56, 57, 58, 57, 58, 61, 62, - 55, 55, 79, 84, 59, 86, 60, 61, 62, 63, - - 57, 67, 57, 63, 61, 62, 63, 63, 63, 63, - 63, 63, 77, 64, 63, 63, 64, 52, 63, 64, - 64, 64, 64, 64, 64, 64, 64, 63, 64, 64, - 63, 81, 92, 63, 63, 63, 63, 63, 63, 51, - 65, 63, 63, 65, 161, 63, 65, 65, 65, 65, - 65, 65, 65, 65, 63, 65, 65, 63, 80, 58, - 80, 58, 55, 93, 91, 94, 59, 95, 63, 116, - 82, 59, 160, 96, 80, 97, 80, 63, 63, 121, - 122, 63, 63, 63, 63, 63, 63, 152, 67, 68, - 63, 69, 159, 63, 67, 67, 67, 67, 67, 67, - - 67, 67, 63, 67, 67, 63, 124, 125, 63, 63, - 63, 63, 63, 63, 150, 70, 71, 63, 72, 158, - 63, 72, 72, 72, 72, 72, 72, 72, 72, 63, - 72, 70, 74, 62, 99, 121, 129, 63, 81, 93, - 75, 101, 59, 156, 102, 75, 76, 96, 63, 104, - 81, 107, 106, 108, 154, 76, 70, 63, 130, 70, - 70, 70, 70, 70, 70, 70, 70, 81, 70, 63, - 120, 131, 63, 63, 63, 63, 63, 63, 144, 89, - 63, 63, 89, 142, 63, 89, 89, 89, 89, 89, - 89, 89, 89, 63, 89, 89, 59, 110, 109, 111, - - 81, 107, 113, 115, 110, 123, 118, 59, 127, 130, - 81, 124, 133, 130, 134, 148, 135, 130, 136, 134, - 137, 139, 131, 136, 146, 141, 131, 142, 59, 143, - 131, 144, 81, 145, 142, 144, 147, 149, 150, 152, - 151, 153, 150, 152, 155, 157, 49, 49, 49, 49, - 49, 53, 136, 134, 53, 53, 54, 54, 59, 59, - 57, 57, 63, 140, 63, 63, 63, 66, 138, 66, - 66, 66, 78, 78, 81, 81, 80, 80, 124, 121, - 132, 128, 126, 110, 107, 119, 117, 114, 112, 96, - 93, 105, 103, 100, 55, 98, 71, 67, 58, 55, - - 81, 58, 162, 90, 88, 87, 59, 58, 83, 162, - 50, 48, 58, 73, 58, 50, 48, 162, 7, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162 + 47, 55, 63, 56, 57, 58, 57, 58, 61, 62, + 74, 62, 55, 63, 78, 55, 60, 83, 59, 85, + + 57, 63, 57, 63, 61, 62, 63, 63, 63, 63, + 63, 63, 63, 64, 63, 63, 64, 84, 63, 64, + 64, 64, 64, 64, 64, 64, 64, 76, 64, 64, + 63, 61, 62, 63, 63, 63, 63, 63, 63, 52, + 65, 63, 63, 65, 51, 63, 65, 65, 65, 65, + 65, 65, 65, 65, 160, 65, 65, 63, 80, 91, + 63, 63, 63, 63, 63, 63, 159, 67, 68, 63, + 69, 151, 63, 67, 67, 67, 67, 67, 67, 67, + 67, 94, 67, 67, 63, 59, 158, 63, 63, 63, + 63, 63, 63, 149, 70, 71, 63, 72, 157, 63, + + 72, 72, 72, 72, 72, 72, 72, 72, 155, 72, + 70, 70, 79, 58, 70, 70, 70, 70, 70, 70, + 70, 70, 98, 70, 79, 58, 80, 63, 79, 67, + 55, 92, 90, 93, 81, 95, 92, 96, 100, 59, + 79, 63, 115, 153, 63, 63, 63, 63, 63, 63, + 143, 88, 63, 63, 88, 141, 63, 88, 88, 88, + 88, 88, 88, 88, 88, 147, 88, 88, 59, 95, + 101, 103, 80, 106, 105, 107, 59, 109, 108, 110, + 80, 106, 112, 114, 109, 80, 117, 145, 119, 120, + 121, 122, 129, 59, 123, 124, 126, 129, 80, 120, + + 128, 123, 132, 129, 133, 130, 134, 129, 135, 133, + 130, 59, 135, 133, 136, 138, 130, 135, 139, 140, + 130, 141, 80, 142, 143, 141, 144, 146, 143, 149, + 148, 150, 151, 149, 152, 154, 151, 137, 156, 49, + 49, 49, 49, 49, 49, 53, 123, 120, 53, 53, + 54, 54, 59, 59, 57, 57, 63, 131, 63, 63, + 63, 63, 66, 127, 66, 66, 66, 66, 75, 125, + 109, 106, 75, 77, 77, 80, 80, 79, 79, 118, + 116, 113, 111, 95, 92, 104, 102, 99, 55, 97, + 71, 67, 58, 55, 80, 58, 161, 89, 87, 86, + + 59, 58, 82, 161, 50, 48, 58, 73, 58, 50, + 48, 161, 7, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161 } ; -static yyconst short int yy_chk[447] = +static yyconst short int yy_chk[441] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -456,47 +455,46 @@ static yyconst short int yy_chk[447] = 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 19, 176, 19, 22, 22, 23, 23, 24, 24, - 44, 56, 44, 56, 60, 60, 23, 61, 61, 67, - - 22, 67, 23, 29, 74, 74, 29, 29, 29, 29, - 29, 29, 172, 29, 29, 29, 29, 165, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 30, 82, 82, 30, 30, 30, 30, 30, 30, 164, - 30, 30, 30, 30, 159, 30, 30, 30, 30, 30, - 30, 30, 30, 30, 30, 30, 30, 33, 45, 45, - 46, 46, 79, 83, 79, 83, 109, 86, 33, 109, - 46, 86, 158, 87, 45, 87, 46, 33, 34, 114, - 114, 34, 34, 34, 34, 34, 34, 157, 34, 34, - 34, 34, 156, 34, 34, 34, 34, 34, 34, 34, - - 34, 34, 34, 34, 34, 37, 117, 117, 37, 37, - 37, 37, 37, 37, 155, 37, 37, 37, 37, 154, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 39, 39, 92, 122, 122, 66, 92, 94, - 39, 94, 95, 152, 95, 39, 39, 97, 66, 97, - 99, 100, 99, 100, 150, 39, 40, 66, 126, 40, - 40, 40, 40, 40, 40, 40, 40, 113, 40, 71, - 113, 126, 71, 71, 71, 71, 71, 71, 149, 71, - 71, 71, 71, 147, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 102, 103, 102, 103, - - 106, 108, 106, 108, 111, 116, 111, 116, 120, 123, - 120, 125, 125, 127, 128, 144, 128, 130, 132, 135, - 132, 135, 123, 137, 142, 137, 127, 138, 123, 138, - 130, 140, 127, 140, 143, 145, 143, 145, 146, 148, - 146, 148, 151, 153, 151, 153, 163, 163, 163, 163, - 163, 166, 141, 139, 166, 166, 167, 167, 168, 168, - 169, 169, 170, 136, 170, 170, 170, 171, 134, 171, - 171, 171, 173, 173, 174, 174, 175, 175, 133, 129, - 124, 121, 119, 118, 115, 112, 110, 107, 105, 104, - 101, 98, 96, 93, 91, 90, 89, 88, 85, 84, - - 81, 80, 78, 73, 69, 68, 59, 57, 55, 54, - 49, 48, 47, 38, 25, 12, 9, 7, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162 + 5, 19, 33, 19, 22, 22, 23, 23, 24, 24, + 39, 39, 44, 33, 44, 56, 23, 56, 60, 60, + + 22, 66, 23, 29, 61, 61, 29, 29, 29, 29, + 29, 29, 66, 29, 29, 29, 29, 176, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 172, 29, 29, + 30, 74, 74, 30, 30, 30, 30, 30, 30, 164, + 30, 30, 30, 30, 163, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 158, 30, 30, 34, 81, 81, + 34, 34, 34, 34, 34, 34, 157, 34, 34, 34, + 34, 156, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 85, 34, 34, 37, 85, 155, 37, 37, 37, + 37, 37, 37, 154, 37, 37, 37, 37, 153, 37, + + 37, 37, 37, 37, 37, 37, 37, 37, 151, 37, + 37, 40, 45, 45, 40, 40, 40, 40, 40, 40, + 40, 40, 91, 40, 46, 46, 91, 67, 45, 67, + 78, 82, 78, 82, 46, 86, 93, 86, 93, 108, + 46, 71, 108, 149, 71, 71, 71, 71, 71, 71, + 148, 71, 71, 71, 71, 146, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 143, 71, 71, 94, 96, + 94, 96, 98, 99, 98, 99, 101, 102, 101, 102, + 105, 107, 105, 107, 110, 112, 110, 141, 112, 113, + 113, 115, 122, 115, 116, 116, 119, 125, 119, 121, + + 121, 124, 124, 126, 127, 122, 127, 129, 140, 138, + 125, 122, 131, 134, 131, 134, 126, 136, 135, 136, + 129, 137, 126, 137, 139, 142, 139, 142, 144, 145, + 144, 145, 147, 150, 147, 150, 152, 133, 152, 162, + 162, 162, 162, 162, 162, 165, 132, 128, 165, 165, + 166, 166, 167, 167, 168, 168, 169, 123, 169, 169, + 169, 169, 170, 120, 170, 170, 170, 170, 171, 118, + 117, 114, 171, 173, 173, 174, 174, 175, 175, 111, + 109, 106, 104, 103, 100, 97, 95, 92, 90, 89, + 88, 87, 84, 83, 80, 79, 77, 73, 69, 68, + + 59, 57, 55, 54, 49, 48, 47, 38, 25, 12, + 9, 7, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161 } ; static yy_state_type yy_last_accepting_state; @@ -515,6 +513,7 @@ char *yytext; #line 2 "parse.lex" /* * CU sudo version 1.5.8 + * Copyright (c) 1996, 1998, 1999 Todd C. Miller * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -591,7 +590,7 @@ extern void yyerror __P((char *)); #define GOTRUNAS 2 -#line 595 "lex.yy.c" +#line 594 "lex.yy.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -742,9 +741,9 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 89 "parse.lex" +#line 90 "parse.lex" -#line 748 "lex.yy.c" +#line 747 "lex.yy.c" if ( yy_init ) { @@ -795,13 +794,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 163 ) + if ( yy_current_state >= 162 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 419 ); + while ( yy_base[yy_current_state] != 413 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -829,14 +828,14 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 90 "parse.lex" +#line 91 "parse.lex" { /* throw away space/tabs */ sawspace = TRUE; /* but remember for fill_args */ } YY_BREAK case 2: YY_RULE_SETUP -#line 94 "parse.lex" +#line 95 "parse.lex" { sawspace = TRUE; /* remember for fill_args */ ++sudolineno; @@ -845,7 +844,7 @@ YY_RULE_SETUP YY_BREAK case 3: YY_RULE_SETUP -#line 100 "parse.lex" +#line 101 "parse.lex" { LEXTRACE("QUOTEDCHAR "); fill_args(yytext + 1, 1, sawspace); @@ -854,7 +853,7 @@ YY_RULE_SETUP YY_BREAK case 4: YY_RULE_SETUP -#line 106 "parse.lex" +#line 107 "parse.lex" { BEGIN INITIAL; unput(*yytext); @@ -863,7 +862,7 @@ YY_RULE_SETUP YY_BREAK case 5: YY_RULE_SETUP -#line 112 "parse.lex" +#line 113 "parse.lex" { ++sudolineno; LEXTRACE("\n"); @@ -872,7 +871,7 @@ YY_RULE_SETUP YY_BREAK case 6: YY_RULE_SETUP -#line 118 "parse.lex" +#line 119 "parse.lex" { ++sudolineno; LEXTRACE("\n"); @@ -881,7 +880,7 @@ YY_RULE_SETUP YY_BREAK case 7: YY_RULE_SETUP -#line 124 "parse.lex" +#line 125 "parse.lex" { LEXTRACE("ARG "); fill_args(yytext, yyleng, sawspace); @@ -890,7 +889,7 @@ YY_RULE_SETUP YY_BREAK case 8: YY_RULE_SETUP -#line 130 "parse.lex" +#line 131 "parse.lex" { LEXTRACE(", "); return(','); @@ -898,14 +897,14 @@ YY_RULE_SETUP YY_BREAK case 9: YY_RULE_SETUP -#line 135 "parse.lex" +#line 136 "parse.lex" { return('!'); /* return '!' */ } YY_BREAK case 10: YY_RULE_SETUP -#line 139 "parse.lex" +#line 140 "parse.lex" { LEXTRACE("= "); return('='); @@ -913,7 +912,7 @@ YY_RULE_SETUP YY_BREAK case 11: YY_RULE_SETUP -#line 144 "parse.lex" +#line 145 "parse.lex" { LEXTRACE(": "); return(':'); @@ -921,14 +920,14 @@ YY_RULE_SETUP YY_BREAK case 12: YY_RULE_SETUP -#line 149 "parse.lex" +#line 150 "parse.lex" { return('.'); } YY_BREAK case 13: YY_RULE_SETUP -#line 153 "parse.lex" +#line 154 "parse.lex" { /* cmnd does not require passwd for this user */ LEXTRACE("NOPASSWD "); @@ -937,7 +936,7 @@ YY_RULE_SETUP YY_BREAK case 14: YY_RULE_SETUP -#line 159 "parse.lex" +#line 160 "parse.lex" { /* netgroup */ fill(yytext, yyleng); @@ -946,7 +945,7 @@ YY_RULE_SETUP YY_BREAK case 15: YY_RULE_SETUP -#line 165 "parse.lex" +#line 166 "parse.lex" { /* UN*X group */ fill(yytext, yyleng); @@ -955,7 +954,7 @@ YY_RULE_SETUP YY_BREAK case 16: YY_RULE_SETUP -#line 171 "parse.lex" +#line 172 "parse.lex" { fill(yytext, yyleng); LEXTRACE("NTWKADDR "); @@ -964,7 +963,7 @@ YY_RULE_SETUP YY_BREAK case 17: YY_RULE_SETUP -#line 177 "parse.lex" +#line 178 "parse.lex" { fill(yytext, yyleng); LEXTRACE("FQHOST "); @@ -973,7 +972,7 @@ YY_RULE_SETUP YY_BREAK case 18: YY_RULE_SETUP -#line 183 "parse.lex" +#line 184 "parse.lex" { BEGIN GOTRUNAS; LEXTRACE("RUNAS "); @@ -982,7 +981,7 @@ YY_RULE_SETUP YY_BREAK case 19: YY_RULE_SETUP -#line 189 "parse.lex" +#line 190 "parse.lex" { /* Runas_Alias that user can run command as or ALL */ fill(yytext, yyleng); @@ -997,7 +996,7 @@ YY_RULE_SETUP YY_BREAK case 20: YY_RULE_SETUP -#line 201 "parse.lex" +#line 202 "parse.lex" { /* username/uid that user can run command as */ fill(yytext, yyleng); @@ -1007,12 +1006,12 @@ YY_RULE_SETUP YY_BREAK case 21: YY_RULE_SETUP -#line 208 "parse.lex" +#line 209 "parse.lex" BEGIN INITIAL; YY_BREAK case 22: YY_RULE_SETUP -#line 211 "parse.lex" +#line 212 "parse.lex" { /* directories can't have args... */ if (yytext[yyleng - 1] == '/') { @@ -1028,7 +1027,7 @@ YY_RULE_SETUP YY_BREAK case 23: YY_RULE_SETUP -#line 224 "parse.lex" +#line 225 "parse.lex" { fill(yytext, yyleng); if (strcmp(yytext, "ALL") == 0) { @@ -1041,7 +1040,7 @@ YY_RULE_SETUP YY_BREAK case 24: YY_RULE_SETUP -#line 234 "parse.lex" +#line 235 "parse.lex" { fill(yytext, yyleng); if (strcmp(yytext, "Host_Alias") == 0) { @@ -1068,17 +1067,17 @@ YY_RULE_SETUP YY_BREAK case 25: YY_RULE_SETUP -#line 258 "parse.lex" +#line 259 "parse.lex" { return(ERROR); } /* parse error */ YY_BREAK case 26: YY_RULE_SETUP -#line 262 "parse.lex" +#line 263 "parse.lex" ECHO; YY_BREAK -#line 1082 "lex.yy.c" +#line 1081 "lex.yy.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(GOTCMND): case YY_STATE_EOF(GOTRUNAS): @@ -1372,7 +1371,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 163 ) + if ( yy_current_state >= 162 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1407,11 +1406,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 163 ) + if ( yy_current_state >= 162 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 162); + yy_is_jam = (yy_current_state == 161); return yy_is_jam ? 0 : yy_current_state; } @@ -1966,7 +1965,7 @@ int main() return 0; } #endif -#line 262 "parse.lex" +#line 263 "parse.lex" static void fill(s, len) char *s; diff --git a/parse.lex b/parse.lex index 3d35f1e51..661958b38 100644 --- a/parse.lex +++ b/parse.lex @@ -122,7 +122,7 @@ WORD [[:alnum:]_-]+ return(COMMENT); } /* return comments */ -[^:\, \t\n]+ { +[^\\:, \t\n]+ { LEXTRACE("ARG "); fill_args(yytext, yyleng, sawspace); sawspace = FALSE; -- 2.40.0