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.
98 lines
2.8 KiB
98 lines
2.8 KiB
7 years ago
|
autofs-5.1.3 - remove expand_selectors() call on amd parser entry
|
||
|
|
||
|
From: Ian Kent <raven@themaw.net>
|
||
|
|
||
|
Macro expansion within the amd parser has to be done during the mount
|
||
|
attempt loop, after any defaults are setup and also after any defaults
|
||
|
overrides from the map entry itself.
|
||
|
|
||
|
Signed-off-by: Ian Kent <raven@themaw.net>
|
||
|
---
|
||
|
CHANGELOG | 1 +
|
||
|
modules/parse_amd.c | 22 ++++++----------------
|
||
|
2 files changed, 7 insertions(+), 16 deletions(-)
|
||
|
|
||
|
--- autofs-5.0.7.orig/CHANGELOG
|
||
|
+++ autofs-5.0.7/CHANGELOG
|
||
|
@@ -271,6 +271,7 @@
|
||
|
- fix typo in amd_parse.c.
|
||
|
- add missing MODPREFIX to logging in amd parser.
|
||
|
- fix symlink false negative in umount_multi().
|
||
|
+- remove expand_selectors() on amd parser entry.
|
||
|
|
||
|
25/07/2012 autofs-5.0.7
|
||
|
=======================
|
||
|
--- autofs-5.0.7.orig/modules/parse_amd.c
|
||
|
+++ autofs-5.0.7/modules/parse_amd.c
|
||
|
@@ -1846,7 +1846,6 @@ int parse_mount(struct autofs_point *ap,
|
||
|
struct amd_entry *defaults_entry;
|
||
|
struct amd_entry *cur_defaults;
|
||
|
char *defaults;
|
||
|
- char *pmapent;
|
||
|
int len, rv = 1;
|
||
|
int cur_state;
|
||
|
int ret;
|
||
|
@@ -1871,17 +1870,8 @@ int parse_mount(struct autofs_point *ap,
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
- len = expand_selectors(ap, mapent, &pmapent, sv);
|
||
|
- if (!len) {
|
||
|
- macro_free_table(sv);
|
||
|
- pthread_setcancelstate(cur_state, NULL);
|
||
|
- return 1;
|
||
|
- }
|
||
|
-
|
||
|
pthread_setcancelstate(cur_state, NULL);
|
||
|
|
||
|
- debug(ap->logopt, MODPREFIX "expanded mapent: %s", pmapent);
|
||
|
-
|
||
|
defaults = conf_amd_get_map_defaults(ap->path);
|
||
|
if (defaults) {
|
||
|
debug(ap->logopt, MODPREFIX
|
||
|
@@ -1903,7 +1893,6 @@ int parse_mount(struct autofs_point *ap,
|
||
|
error(ap->logopt, MODPREFIX "failed to get a defaults entry");
|
||
|
if (defaults)
|
||
|
free(defaults);
|
||
|
- free(pmapent);
|
||
|
macro_free_table(sv);
|
||
|
return 1;
|
||
|
}
|
||
|
@@ -1912,16 +1901,13 @@ int parse_mount(struct autofs_point *ap,
|
||
|
|
||
|
INIT_LIST_HEAD(&entries);
|
||
|
|
||
|
- ret = amd_parse_list(ap, pmapent, &entries, &sv);
|
||
|
+ ret = amd_parse_list(ap, mapent, &entries, &sv);
|
||
|
if (ret) {
|
||
|
error(ap->logopt,
|
||
|
- MODPREFIX "failed to parse entry: %s", pmapent);
|
||
|
- free(pmapent);
|
||
|
+ MODPREFIX "failed to parse entry: %s", mapent);
|
||
|
goto done;
|
||
|
}
|
||
|
|
||
|
- free(pmapent);
|
||
|
-
|
||
|
if (list_empty(&entries)) {
|
||
|
error(ap->logopt, MODPREFIX "no location found after parse");
|
||
|
goto done;
|
||
|
@@ -1958,6 +1944,9 @@ int parse_mount(struct autofs_point *ap,
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
+ debug(ap->logopt, "expand defaults entry");
|
||
|
+ sv = expand_entry(ap, cur_defaults, flags, sv);
|
||
|
+
|
||
|
if (this->flags & AMD_ENTRY_CUT && at_least_one) {
|
||
|
info(ap->logopt, MODPREFIX
|
||
|
"at least one entry tried before cut selector, "
|
||
|
@@ -1970,6 +1959,7 @@ int parse_mount(struct autofs_point *ap,
|
||
|
|
||
|
at_least_one = 1;
|
||
|
|
||
|
+ debug(ap->logopt, "expand mount entry");
|
||
|
update_with_defaults(cur_defaults, this, sv);
|
||
|
sv = expand_entry(ap, this, flags, sv);
|
||
|
sv = merge_entry_options(ap, this, sv);
|