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