Blame SOURCES/autofs-5.1.3-remove-expand_selectors-call-on-amd-parser-entry.patch

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