You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.0 KiB

autofs-5.1.0-beta1 - allow empty value in macro selectors
From: Ian Kent <raven@themaw.net>
Some map selectors (this case is olny considering macro selectors) may
be given the comparison value left blank, possibly with the intent the
selector will not match so a mount will not be attempted, such as when
the delay option is also given.
autofs doesn't implement the delay option but it shouldn't fail to parse
these locations so that a valid locations in the list can be tried.
---
CHANGELOG | 1 +
modules/amd_parse.y | 14 ++++++++++++++
modules/parse_amd.c | 9 +++++++--
3 files changed, 22 insertions(+), 2 deletions(-)
--- autofs-5.0.7.orig/CHANGELOG
+++ autofs-5.0.7/CHANGELOG
@@ -125,6 +125,7 @@
- fix multi entry ldap option handling.
- cleanup options in amd_parse.c
- allow empty value for some map options.
+- allow empty value in macro selectors.
25/07/2012 autofs-5.0.7
=======================
--- autofs-5.0.7.orig/modules/amd_parse.y
+++ autofs-5.0.7/modules/amd_parse.y
@@ -200,12 +200,26 @@ selection: SELECTOR IS_EQUAL SELECTOR_VA
YYABORT;
}
}
+ | SELECTOR IS_EQUAL
+ {
+ if (!make_selector($1, "", NULL, SEL_COMP_EQUAL)) {
+ amd_notify($1);
+ YYABORT;
+ }
+ }
| SELECTOR NOT_EQUAL SELECTOR_VALUE
{
if (!make_selector($1, $3, NULL, SEL_COMP_NOTEQUAL)) {
amd_notify($1);
YYABORT;
}
+ }
+ | SELECTOR NOT_EQUAL
+ {
+ if (!make_selector($1, "", NULL, SEL_COMP_EQUAL)) {
+ amd_notify($1);
+ YYABORT;
+ }
}
| SELECTOR LBRACKET SEL_ARG_VALUE RBRACKET
{
--- autofs-5.0.7.orig/modules/parse_amd.c
+++ autofs-5.0.7/modules/parse_amd.c
@@ -350,8 +350,13 @@ static int eval_selector(unsigned int lo
break;
case SEL_FLAG_NUM:
- res = atoi(v->val);
- val = atoi(s->comp.value);
+ if (!*s->comp.value) {
+ res = 1;
+ val = 0;
+ } else {
+ res = atoi(v->val);
+ val = atoi(s->comp.value);
+ }
if (s->compare & SEL_COMP_EQUAL && res == val) {
debug(logopt, MODPREFIX
"matched selector %s(%s) equal to %s",