version 1.10, 2003/04/19 21:57:17 |
version 1.11, 2004/09/28 15:10:51 |
|
|
%{ |
%{ |
/* |
/* |
* Copyright (c) 1996, 1998-2003 Todd C. Miller <Todd.Miller@courtesan.com> |
* Copyright (c) 1996, 1998-2004 Todd C. Miller <Todd.Miller@courtesan.com> |
* All rights reserved. |
|
* |
* |
* This code is derived from software contributed by Chris Jepeway. |
* Permission to use, copy, modify, and distribute this software for any |
|
* purpose with or without fee is hereby granted, provided that the above |
|
* copyright notice and this permission notice appear in all copies. |
* |
* |
* This code is derived from software contributed by Chris Jepeway |
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
* Redistribution and use in source and binary forms, with or without |
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
* modification, are permitted provided that the following conditions |
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
* are met: |
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
* |
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
* 1. Redistributions of source code must retain the above copyright |
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
* notice, this list of conditions and the following disclaimer. |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
* |
|
* 2. Redistributions in binary form must reproduce the above copyright |
|
* notice, this list of conditions and the following disclaimer in the |
|
* documentation and/or other materials provided with the distribution. |
|
* |
|
* 3. The name of the author may not be used to endorse or promote products |
|
* derived from this software without specific prior written permission. |
|
* |
|
* 4. Products derived from this software may not be called "Sudo" nor |
|
* may "Sudo" appear in their names without specific prior written |
|
* permission from the author. |
|
* |
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, |
|
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY |
|
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL |
|
* THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
|
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
|
#include <sudo.tab.h> |
#include <sudo.tab.h> |
|
|
#ifndef lint |
#ifndef lint |
static const char rcsid[] = "$Sudo: parse.lex,v 1.127 2003/04/16 00:42:10 millert Exp $"; |
static const char rcsid[] = "$Sudo: parse.lex,v 1.132 2004/05/17 20:51:13 millert Exp $"; |
#endif /* lint */ |
#endif /* lint */ |
|
|
#undef yywrap /* guard against a yywrap macro */ |
#undef yywrap /* guard against a yywrap macro */ |
|
|
} |
} |
|
|
<GOTCMND>{ |
<GOTCMND>{ |
|
\\[\*\?\[\]\!] { |
|
/* quoted fnmatch glob char, pass verbatim */ |
|
LEXTRACE("QUOTEDCHAR "); |
|
fill_args(yytext, 2, sawspace); |
|
sawspace = FALSE; |
|
} |
|
|
\\[:\\,= \t#] { |
\\[:\\,= \t#] { |
|
/* quoted sudoers special char, strip backslash */ |
LEXTRACE("QUOTEDCHAR "); |
LEXTRACE("QUOTEDCHAR "); |
fill_args(yytext + 1, 1, sawspace); |
fill_args(yytext + 1, 1, sawspace); |
sawspace = FALSE; |
sawspace = FALSE; |
|
|
return(PASSWD); |
return(PASSWD); |
} |
} |
|
|
|
NOEXEC[[:blank:]]*: { |
|
LEXTRACE("NOEXEC "); |
|
return(NOEXEC); |
|
} |
|
|
|
EXEC[[:blank:]]*: { |
|
LEXTRACE("EXEC "); |
|
return(EXEC); |
|
} |
|
|
\+{WORD} { |
\+{WORD} { |
/* netgroup */ |
/* netgroup */ |
fill(yytext, yyleng); |
fill(yytext, yyleng); |
|
|
<GOTRUNAS>\) { |
<GOTRUNAS>\) { |
BEGIN INITIAL; |
BEGIN INITIAL; |
} |
} |
|
|
|
sudoedit { |
|
BEGIN GOTCMND; |
|
LEXTRACE("COMMAND "); |
|
fill_cmnd(yytext, yyleng); |
|
} /* sudo -e */ |
|
|
\/(\\[\,:= \t#]|[^\,:=\\ \t\n#])+ { |
\/(\\[\,:= \t#]|[^\,:=\\ \t\n#])+ { |
/* directories can't have args... */ |
/* directories can't have args... */ |