]> granicus.if.org Git - sudo/commitdiff
Fix a bug wrt quoting characters in command args. Stop processing an arg when you...
authorTodd C. Miller <Todd.Miller@courtesan.com>
Sun, 7 Mar 1999 23:34:31 +0000 (23:34 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Sun, 7 Mar 1999 23:34:31 +0000 (23:34 +0000)
CHANGES
lex.yy.c
parse.lex

diff --git a/CHANGES b/CHANGES
index 3744c794e692f39c38304964c8d3adc5c4996cf4..f63aaa5c87943e4489458cdef877132d0514be7c 100644 (file)
--- 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.
index 4473dcfe7df9c2377bd95d26d1daa85e4be0460e..4afc4cd26ef0ab376c0ab185fbfad09556500242 100644 (file)
--- 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 <Todd.Miller@courtesan.com>
  *
  *  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;
index 3d35f1e51d087fe652ffd8bf1ab0238be2e2e448..661958b38accc5e8f2605e19d758d0231a38a071 100644 (file)
--- a/parse.lex
+++ b/parse.lex
@@ -122,7 +122,7 @@ WORD                        [[:alnum:]_-]+
                            return(COMMENT);
                        }                       /* return comments */
 
-<GOTCMND>[^:\, \t\n]+ {
+<GOTCMND>[^\\:, \t\n]+ {
                            LEXTRACE("ARG ");
                            fill_args(yytext, yyleng, sawspace);
                            sawspace = FALSE;