|
Ian Kent |
c3a32a |
autofs-5.0.3 - ignore nsswitch sources that aren't supported
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
From: Ian Kent <raven@themaw.net>
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
Allow any source name in nsswitch and ignore those we don't support.
|
|
Ian Kent |
c3a32a |
This has the side affect of also ignoring any action associated with
|
|
Ian Kent |
c3a32a |
a source that isn't supported by autofs.
|
|
Ian Kent |
c3a32a |
---
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
d5fc0d |
CHANGELOG | 1 +
|
|
Ian Kent |
c3a32a |
lib/nss_parse.y | 31 ++++++++++++++++---------------
|
|
Ian Kent |
c3a32a |
lib/nss_tok.l | 22 ++++++++++++----------
|
|
Ian Kent |
d5fc0d |
3 files changed, 29 insertions(+), 25 deletions(-)
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
d5fc0d |
--- autofs-5.0.3.orig/CHANGELOG
|
|
Ian Kent |
d5fc0d |
+++ autofs-5.0.3/CHANGELOG
|
|
Ian Kent |
d5fc0d |
@@ -13,6 +13,7 @@
|
|
Ian Kent |
d5fc0d |
- fix incorrect match of map type name when included in map name.
|
|
Ian Kent |
d5fc0d |
- fix incorrect pthreads condition handling for mount requests.
|
|
Ian Kent |
d5fc0d |
- add check for exports automatically mounted by NFS kernel client.
|
|
Ian Kent |
d5fc0d |
+- update nsswitch parser to ignore nsswitch sources that aren't supported.
|
|
Ian Kent |
d5fc0d |
|
|
Ian Kent |
d5fc0d |
14/01/2008 autofs-5.0.3
|
|
Ian Kent |
d5fc0d |
-----------------------
|
|
Ian Kent |
d5fc0d |
--- autofs-5.0.3.orig/lib/nss_parse.y
|
|
Ian Kent |
d5fc0d |
+++ autofs-5.0.3/lib/nss_parse.y
|
|
Ian Kent |
c3a32a |
@@ -64,7 +64,6 @@ char strval[128];
|
|
Ian Kent |
c3a32a |
%token <strval> SOURCE
|
|
Ian Kent |
c3a32a |
%token <strval> STATUS
|
|
Ian Kent |
c3a32a |
%token <strval> ACTION
|
|
Ian Kent |
c3a32a |
-%token <strval> OTHER
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
%start file
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
@@ -83,7 +82,9 @@ sources: nss_source
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
nss_source: SOURCE
|
|
Ian Kent |
c3a32a |
{
|
|
Ian Kent |
c3a32a |
- if (strcmp($1, "winbind"))
|
|
Ian Kent |
c3a32a |
+ if (!strcmp($1, "files") || !strcmp($1, "yp") ||
|
|
Ian Kent |
c3a32a |
+ !strcmp($1, "nis") || !strcmp($1, "ldap") ||
|
|
Ian Kent |
c3a32a |
+ !strcmp($1, "nisplus") || !strcmp($1, "hesiod"))
|
|
Ian Kent |
c3a32a |
src = add_source(nss_list, $1);
|
|
Ian Kent |
c3a32a |
else
|
|
Ian Kent |
c3a32a |
nss_ignore($1);
|
|
Ian Kent |
c3a32a |
@@ -91,7 +92,9 @@ nss_source: SOURCE
|
|
Ian Kent |
c3a32a |
{
|
|
Ian Kent |
c3a32a |
enum nsswitch_status a;
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
- if (strcmp($1, "winbind")) {
|
|
Ian Kent |
c3a32a |
+ if (!strcmp($1, "files") || !strcmp($1, "yp") ||
|
|
Ian Kent |
c3a32a |
+ !strcmp($1, "nis") || !strcmp($1, "ldap") ||
|
|
Ian Kent |
c3a32a |
+ !strcmp($1, "nisplus") || !strcmp($1, "hesiod")) {
|
|
Ian Kent |
c3a32a |
src = add_source(nss_list, $1);
|
|
Ian Kent |
c3a32a |
for (a = 0; a < NSS_STATUS_MAX; a++) {
|
|
Ian Kent |
c3a32a |
if (act[a].action != NSS_ACTION_UNKNOWN) {
|
|
Ian Kent |
c3a32a |
@@ -101,12 +104,10 @@ nss_source: SOURCE
|
|
Ian Kent |
c3a32a |
}
|
|
Ian Kent |
c3a32a |
} else
|
|
Ian Kent |
c3a32a |
nss_ignore($1);
|
|
Ian Kent |
c3a32a |
-} | SOURCE LBRACKET status_exp_list SOURCE { nss_error($4); YYABORT; }
|
|
Ian Kent |
c3a32a |
- | SOURCE LBRACKET status_exp_list OTHER { nss_error($4); YYABORT; }
|
|
Ian Kent |
c3a32a |
- | SOURCE LBRACKET status_exp_list NL { nss_error("no closing bracket"); YYABORT; }
|
|
Ian Kent |
c3a32a |
- | SOURCE LBRACKET OTHER { nss_error($3); YYABORT; }
|
|
Ian Kent |
c3a32a |
- | SOURCE OTHER { nss_error("no opening bracket"); YYABORT; }
|
|
Ian Kent |
c3a32a |
- | error OTHER { nss_error($2); YYABORT; };
|
|
Ian Kent |
c3a32a |
+} | SOURCE LBRACKET status_exp_list SOURCE { nss_error("missing close bracket"); YYABORT; }
|
|
Ian Kent |
c3a32a |
+ | SOURCE LBRACKET status_exp_list NL { nss_error("missing close bracket"); YYABORT; }
|
|
Ian Kent |
c3a32a |
+ | SOURCE LBRACKET SOURCE { nss_error($3); YYABORT; }
|
|
Ian Kent |
c3a32a |
+ | error SOURCE { nss_error($2); YYABORT; };
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
status_exp_list: status_exp
|
|
Ian Kent |
c3a32a |
| status_exp status_exp_list
|
|
Ian Kent |
c3a32a |
@@ -117,17 +118,17 @@ status_exp: STATUS EQUAL ACTION
|
|
Ian Kent |
c3a32a |
} | BANG STATUS EQUAL ACTION
|
|
Ian Kent |
c3a32a |
{
|
|
Ian Kent |
c3a32a |
set_action(act, $2, $4, 1);
|
|
Ian Kent |
c3a32a |
-} | STATUS EQUAL OTHER {nss_error($3); YYABORT; }
|
|
Ian Kent |
c3a32a |
- | STATUS OTHER {nss_error($2); YYABORT; }
|
|
Ian Kent |
c3a32a |
- | BANG STATUS EQUAL OTHER {nss_error($4); YYABORT; }
|
|
Ian Kent |
c3a32a |
- | BANG STATUS OTHER {nss_error($3); YYABORT; }
|
|
Ian Kent |
c3a32a |
- | BANG OTHER {nss_error($2); YYABORT; };
|
|
Ian Kent |
c3a32a |
+} | STATUS EQUAL SOURCE {nss_error($3); YYABORT; }
|
|
Ian Kent |
c3a32a |
+ | STATUS SOURCE {nss_error($2); YYABORT; }
|
|
Ian Kent |
c3a32a |
+ | BANG STATUS EQUAL SOURCE {nss_error($4); YYABORT; }
|
|
Ian Kent |
c3a32a |
+ | BANG STATUS SOURCE {nss_error($3); YYABORT; }
|
|
Ian Kent |
c3a32a |
+ | BANG SOURCE {nss_error($2); YYABORT; };
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
%%
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
static int nss_ignore(const char *s)
|
|
Ian Kent |
c3a32a |
{
|
|
Ian Kent |
c3a32a |
- logmsg("ignored invalid nsswitch config near [ %s ]", s);
|
|
Ian Kent |
c3a32a |
+ logmsg("ignored unsupported autofs nsswitch source \"%s\"", s);
|
|
Ian Kent |
c3a32a |
return(0);
|
|
Ian Kent |
c3a32a |
}
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
d5fc0d |
--- autofs-5.0.3.orig/lib/nss_tok.l
|
|
Ian Kent |
d5fc0d |
+++ autofs-5.0.3/lib/nss_tok.l
|
|
Ian Kent |
c3a32a |
@@ -62,13 +62,13 @@ extern unsigned int nss_automount_found;
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
%option nounput
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
-%x AUTOMOUNT
|
|
Ian Kent |
c3a32a |
+%x AUTOMOUNT ACTIONSTR
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
WS [[:blank:]]+
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
automount ([Aa][Uu][Tt][Oo][Mm][Oo][Uu][Nn][Tt])
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
-source files|yp|nis|nisplus|ldap|hesiod|winbind
|
|
Ian Kent |
c3a32a |
+source [[:alnum:]@$%^&*()-+_":;?,<>./'{}~`]+
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
success ([Ss][Uu][Cc][Cc][Ee][Ss][Ss])
|
|
Ian Kent |
c3a32a |
notfound ([Nn][Oo][Tt][Ff][Oo][Uu][Nn][Dd])
|
|
Ian Kent |
c3a32a |
@@ -82,8 +82,6 @@ return ([Rr][Ee][Tt][Uu][Rr][Nn])
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
action ({continue}|{return})
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
-other [[:alnum:]@$%^&*()-+_":;?,<>./'{}~`]+
|
|
Ian Kent |
c3a32a |
-
|
|
Ian Kent |
c3a32a |
%%
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
^{automount}: {
|
|
Ian Kent |
d5fc0d |
@@ -101,6 +99,14 @@ other [[:alnum:]@$%^&*()-+_":;?,<>./'{}
|
|
Ian Kent |
c3a32a |
return SOURCE;
|
|
Ian Kent |
c3a32a |
}
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
+ "[" { BEGIN(ACTIONSTR); yyless(0); }
|
|
Ian Kent |
c3a32a |
+
|
|
Ian Kent |
c3a32a |
+ \n { BEGIN(INITIAL); return NL; }
|
|
Ian Kent |
c3a32a |
+}
|
|
Ian Kent |
c3a32a |
+
|
|
Ian Kent |
c3a32a |
+<ACTIONSTR>{
|
|
Ian Kent |
c3a32a |
+ {WS} { }
|
|
Ian Kent |
c3a32a |
+
|
|
Ian Kent |
c3a32a |
{status} {
|
|
Ian Kent |
c3a32a |
strcpy(nss_lval.strval, nss_text);
|
|
Ian Kent |
c3a32a |
return STATUS;
|
|
Ian Kent |
d5fc0d |
@@ -112,15 +118,11 @@ other [[:alnum:]@$%^&*()-+_":;?,<>./'{}
|
|
Ian Kent |
c3a32a |
}
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
"[" { return LBRACKET; }
|
|
Ian Kent |
c3a32a |
- "]" { return RBRACKET; }
|
|
Ian Kent |
c3a32a |
+ "]" { BEGIN(AUTOMOUNT); return RBRACKET; }
|
|
Ian Kent |
c3a32a |
"=" { return EQUAL; }
|
|
Ian Kent |
c3a32a |
"!" { return BANG; }
|
|
Ian Kent |
c3a32a |
|
|
Ian Kent |
c3a32a |
- {other} {
|
|
Ian Kent |
c3a32a |
- strcpy(nss_lval.strval, nss_text);
|
|
Ian Kent |
c3a32a |
- return OTHER;
|
|
Ian Kent |
c3a32a |
- }
|
|
Ian Kent |
c3a32a |
-
|
|
Ian Kent |
c3a32a |
+ . { BEGIN(AUTOMOUNT); yyless(0); }
|
|
Ian Kent |
c3a32a |
\n { BEGIN(INITIAL); return NL; }
|
|
Ian Kent |
c3a32a |
}
|
|
Ian Kent |
c3a32a |
|