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.
97 lines
2.8 KiB
97 lines
2.8 KiB
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);
|
|
|