SOURCES: autofs-5.0.2-add-ferror-check.patch (NEW), autofs-5.0.2-a...

blues blues at pld-linux.org
Mon Dec 24 12:25:08 CET 2007


Author: blues                        Date: Mon Dec 24 11:25:07 2007 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- "few" official patches

---- Files affected:
SOURCES:
   autofs-5.0.2-add-ferror-check.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-add-krb5-include.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-add-ldap-schema-discovery-fix-2.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-add-ldap-schema-discovery-fix.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-add-ldap-schema-discovery.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-add-missing-multi-support.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-add-multi-nsswitch-lookup.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-add-multiple-server-selection-option-fix.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-add-multiple-server-selection-option.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-autofs-5-typo.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-bad-proto-init.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-basedn-with-spaces-fix-2.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-basedn-with-spaces-fix.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-basedn-with-spaces.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-check-auto_master.patch (NONE -> 1.1)  (NEW), autofs
 -5.0.2-check-mtab-updated-fix.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-check-mtab-updated.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-cleanup-krb5-comment.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-consistent-random-selection-option-name.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-default-nsswitch.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-dont-fail-on-empty-master-fix.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-dont-fail-on-empty-master.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-dynamic-logging-fixes.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-dynamic-logging-non-sasl.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-dynamic-logging.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-external-cred-cache.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-fix-dnattr-parse.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-fix-largefile-dumbness.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-fix-mount-nfs-nosymlink.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-fix-nfs-version-in-get-supported-ver-and-cost.patch (NONE -> 1.1)  (NEW), autofs-5.0.
 2-fix-off-by-one-lookup.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-fix-offset-dir-create.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-fix-recursive-loopback-mounts.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-foreground-logging.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-hi-res-time.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-hosts-nosuid-default.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-improve-server-unavail-fix.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-improve-server-unavail.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-instance-stale-mark.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-large-groups.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-ldap-check-star.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-ldap-percent-hack.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-ldap-schema-discovery-config-update.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-ldap-search-basedn-list.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-libxml2-workaround.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-log-map-reload.patch (NONE -> 1.1)  (NEW), autofs-
 5.0.2-master-check-underscore.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-negative-timeout-update.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-percent-hack-fix.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-quell-mount-module-message.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-quoted-slash-alone.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-quote-exports-fix-fix.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-quote-exports-fix.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-quote-exports.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-random-selection-fix.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-remove-unsed-export-validation-code.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-report-failed-lookups.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-reread-config-on-hup.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-singleton-host-list.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-start-pipe-buff-size.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-submount-deadlock.patch (NONE -> 1.1)  (NEW), autofs-5.0.2-swallow-null-macro.patch (NONE -> 1.1)  (NEW
 ), autofs-5.0.2-timeout-option-parse-fix.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/autofs-5.0.2-add-ferror-check.patch
diff -u /dev/null SOURCES/autofs-5.0.2-add-ferror-check.patch:1.1
--- /dev/null	Mon Dec 24 12:25:07 2007
+++ SOURCES/autofs-5.0.2-add-ferror-check.patch	Mon Dec 24 12:25:00 2007
@@ -0,0 +1,134 @@
+diff --git a/CHANGELOG b/CHANGELOG
+index 2db9b39..dd08880 100644
+--- a/CHANGELOG
++++ b/CHANGELOG
+@@ -31,6 +31,7 @@
+ - fix forground logging and add option to man page.
+ - remove unjustified, nasty comment about krb5 package.
+ - fix deadlock in submount mount module.
++- fix lack of ferror() checking when reading files.
+ 
+ 18/06/2007 autofs-5.0.2
+ -----------------------
+diff --git a/daemon/automount.c b/daemon/automount.c
+index 930b13f..70a3b9d 100644
+--- a/daemon/automount.c
++++ b/daemon/automount.c
+@@ -978,7 +978,7 @@ static void *do_read_master(void *arg)
+ 	if (status)
+ 		fatal(status);
+ 
+-	defaults_read_config();
++	defaults_read_config(1);
+ 
+ 	status = master_read_master(master, age, readall);
+ 
+@@ -1465,7 +1465,7 @@ int main(int argc, char *argv[])
+ 
+ 	program = argv[0];
+ 
+-	defaults_read_config();
++	defaults_read_config(0);
+ 
+ 	kpkt_len = get_kpkt_len();
+ 	timeout = defaults_get_timeout();
+diff --git a/include/defaults.h b/include/defaults.h
+index 46393d9..0e0e2a5 100644
+--- a/include/defaults.h
++++ b/include/defaults.h
+@@ -41,7 +41,7 @@
+ struct ldap_schema;
+ struct ldap_searchdn;
+ 
+-unsigned int defaults_read_config(void);
++unsigned int defaults_read_config(unsigned int);
+ const char *defaults_get_master_map(void);
+ unsigned int defaults_get_timeout(void);
+ unsigned int defaults_get_browse_mode(void);
+diff --git a/lib/defaults.c b/lib/defaults.c
+index bf1ceed..2cccf20 100644
+--- a/lib/defaults.c
++++ b/lib/defaults.c
+@@ -280,7 +280,7 @@ struct list_head *defaults_get_uris(void)
+  * is valid bourne shell script without spaces around "="
+  * and that it has valid values.
+  */
+-unsigned int defaults_read_config(void)
++unsigned int defaults_read_config(unsigned int to_syslog)
+ {
+ 	FILE *f;
+ 	char buf[MAX_LINE_LEN];
+@@ -312,9 +312,16 @@ unsigned int defaults_read_config(void)
+ 			;
+ 	}
+ 
+-	if (!feof(f)) {
+-		fprintf(stderr, "fgets returned error %d while reading %s\n",
+-			ferror(f), DEFAULTS_CONFIG_FILE);
++	if (!feof(f) || ferror(f)) {
++		if (!to_syslog) {
++			fprintf(stderr,
++				"fgets returned error %d while reading %s\n",
++				ferror(f), DEFAULTS_CONFIG_FILE);
++		} else {
++			error(LOGOPT_ANY,
++			      "fgets returned error %d while reading %s",
++			      ferror(f), DEFAULTS_CONFIG_FILE);
++		}
+ 		fclose(f);
+ 		return 0;
+ 	}
+diff --git a/modules/lookup_file.c b/modules/lookup_file.c
+index 6346602..31ee0fb 100644
+--- a/modules/lookup_file.c
++++ b/modules/lookup_file.c
+@@ -442,6 +442,11 @@ int lookup_read_master(struct master *master, time_t age, void *context)
+ 		if (!entry) {
+ 			if (feof(f))
+ 				break;
++			if (ferror(f)) {
++				warn(LOGOPT_ANY, MODPREFIX
++				     "error reading map %s", ctxt->mapname);
++				break;
++			}
+ 			continue;
+ 		}
+ 
+@@ -683,6 +688,11 @@ int lookup_read_map(struct autofs_point *ap, time_t age, void *context)
+ 		if (!entry) {
+ 			if (feof(f))
+ 				break;
++			if (ferror(f)) {
++				warn(LOGOPT_ANY, MODPREFIX
++				      "error reading map %s", ctxt->mapname);
++				break;
++			}
+ 			continue;
+ 		}
+ 			
+@@ -848,6 +858,12 @@ static int lookup_one(struct autofs_point *ap,
+ 
+ 		if (feof(f))
+ 			break;
++
++		if (ferror(f)) {
++			warn(LOGOPT_ANY, MODPREFIX
++			      "error reading map %s", ctxt->mapname);
++			break;
++		}		
+ 	}
+ 
+ 	fclose(f);
+@@ -907,6 +923,12 @@ static int lookup_wild(struct autofs_point *ap, struct lookup_context *ctxt)
+ 
+ 		if (feof(f))
+ 			break;
++
++		if (ferror(f)) {
++			warn(LOGOPT_ANY, MODPREFIX
++			      "error reading map %s", ctxt->mapname);
++			break;
++		}		
+ 	}
+ 
+ 	fclose(f);

================================================================
Index: SOURCES/autofs-5.0.2-add-krb5-include.patch
diff -u /dev/null SOURCES/autofs-5.0.2-add-krb5-include.patch:1.1
--- /dev/null	Mon Dec 24 12:25:07 2007
+++ SOURCES/autofs-5.0.2-add-krb5-include.patch	Mon Dec 24 12:25:00 2007
@@ -0,0 +1,24 @@
+diff --git a/CHANGELOG b/CHANGELOG
+index 172d0cd..6931791 100644
+--- a/CHANGELOG
++++ b/CHANGELOG
+@@ -1,3 +1,7 @@
++??/??/2007 autofs-5.0.3
++-----------------------
++- include krb5.h in lookup_ldap.h (some openssl doesn't implicitly include it).
++
+ 18/06/2007 autofs-5.0.2
+ -----------------------
+ - fix return check for getpwuid_r and getgrgid_r.
+diff --git a/include/lookup_ldap.h b/include/lookup_ldap.h
+index e1c5b4e..0a9deca 100644
+--- a/include/lookup_ldap.h
++++ b/include/lookup_ldap.h
+@@ -7,6 +7,7 @@
+ #include <openssl/err.h>
+ #include <sasl/sasl.h>
+ #include <libxml/tree.h>
++#include <krb5.h>
+ #endif
+ 
+ struct lookup_context {

================================================================
Index: SOURCES/autofs-5.0.2-add-ldap-schema-discovery-fix-2.patch
diff -u /dev/null SOURCES/autofs-5.0.2-add-ldap-schema-discovery-fix-2.patch:1.1
--- /dev/null	Mon Dec 24 12:25:08 2007
+++ SOURCES/autofs-5.0.2-add-ldap-schema-discovery-fix-2.patch	Mon Dec 24 12:25:00 2007
@@ -0,0 +1,39 @@
+diff --git a/CHANGELOG b/CHANGELOG
+index 1c147c5..74d39fd 100644
+--- a/CHANGELOG
++++ b/CHANGELOG
+@@ -41,6 +41,7 @@
+ - fix handling of LDAP base dns with spaces.
+ - handle MTAB_NOTUPDATED status return from mount.
+ - when default master map, auto.master, is used also check for auto_master.
++- fix schema selection in LDAP schema discovery.
+ 
+ 18/06/2007 autofs-5.0.2
+ -----------------------
+diff --git a/modules/lookup_ldap.c b/modules/lookup_ldap.c
+index dfb3054..8719af9 100644
+--- a/modules/lookup_ldap.c
++++ b/modules/lookup_ldap.c
+@@ -193,10 +193,11 @@ static int get_query_dn(unsigned logopt, LDAP *ldap, struct lookup_context *ctxt
+ 	LDAPMessage *result = NULL, *e;
+ 	struct ldap_searchdn *sdns = NULL;
+ 	char *attrs[2];
++	struct berval **value;
+ 	int scope;
+ 	int rv, l;
+ 
+-	attrs[0] = LDAP_NO_ATTRS;
++	attrs[0] = (char *) key;
+ 	attrs[1] = NULL;
+ 
+ 	if (!ctxt->mapname && !ctxt->base) {
+@@ -283,7 +284,8 @@ static int get_query_dn(unsigned logopt, LDAP *ldap, struct lookup_context *ctxt
+ 	}
+ 
+ 	e = ldap_first_entry(ldap, result);
+-	if (e) {
++	if (e && (value = ldap_get_values_len(ldap, e, key))) {
++		ldap_value_free_len(value);
+ 		dn = ldap_get_dn(ldap, e);
+ 		debug(logopt, MODPREFIX "found query dn %s", dn);
+ 	} else {

================================================================
Index: SOURCES/autofs-5.0.2-add-ldap-schema-discovery-fix.patch
diff -u /dev/null SOURCES/autofs-5.0.2-add-ldap-schema-discovery-fix.patch:1.1
--- /dev/null	Mon Dec 24 12:25:08 2007
+++ SOURCES/autofs-5.0.2-add-ldap-schema-discovery-fix.patch	Mon Dec 24 12:25:00 2007
@@ -0,0 +1,32 @@
+diff --git a/CHANGELOG b/CHANGELOG
+index ef549cf..08afa7c 100644
+--- a/CHANGELOG
++++ b/CHANGELOG
+@@ -23,6 +23,7 @@
+ - add random selection as a master map entry option.
+ - fix couple of edge case parse fails of timeout option.
+ - check for "*" when looking up wildcard in LDAP.
++- fix LDAP schema discovery.
+ 
+ 18/06/2007 autofs-5.0.2
+ -----------------------
+diff --git a/modules/lookup_ldap.c b/modules/lookup_ldap.c
+index a7b315e..9c18ca1 100644
+--- a/modules/lookup_ldap.c
++++ b/modules/lookup_ldap.c
+@@ -1009,6 +1009,15 @@ int lookup_init(const char *mapfmt, int argc, const char *const *argv, void **co
+ 			free_context(ctxt);
+ 			return 1;
+ 		}
++	} else {
++		const char *class = ctxt->schema->map_class;
++		const char *key = ctxt->schema->map_attr;
++		if (!get_query_dn(ldap, ctxt, class, key)) {
++			unbind_ldap_connection(ldap, ctxt);
++			error(LOGOPT_ANY, MODPREFIX "failed to get query dn");
++			free_context(ctxt);
++			return 1;
++		}
+ 	}
+ 	unbind_ldap_connection(ldap, ctxt);
+ 

================================================================
Index: SOURCES/autofs-5.0.2-add-ldap-schema-discovery.patch
diff -u /dev/null SOURCES/autofs-5.0.2-add-ldap-schema-discovery.patch:1.1
--- /dev/null	Mon Dec 24 12:25:08 2007
+++ SOURCES/autofs-5.0.2-add-ldap-schema-discovery.patch	Mon Dec 24 12:25:00 2007
@@ -0,0 +1,662 @@
+diff --git a/CHANGELOG b/CHANGELOG
+index 92013ce..c36017a 100644
+--- a/CHANGELOG
++++ b/CHANGELOG
+@@ -19,6 +19,7 @@
+ - fix "nosymlink" option handling and add desription to man page.
+ - fix don't fail on empty master map.
+ - if there's no "automount" entry in nsswitch.conf use "files" source.
++- add LDAP schema discovery if no schema is configured.
+ 
+ 18/06/2007 autofs-5.0.2
+ -----------------------
+diff --git a/include/defaults.h b/include/defaults.h
+index ef58467..9aec11a 100644
+--- a/include/defaults.h
++++ b/include/defaults.h
+@@ -43,11 +43,8 @@ unsigned int defaults_get_timeout(void);
+ unsigned int defaults_get_browse_mode(void);
+ unsigned int defaults_get_logging(void);
+ const char *defaults_get_ldap_server(void);
+-const char *defaults_get_map_obj_class(void);
+-const char *defaults_get_entry_obj_class(void);
+-const char *defaults_get_map_attr(void);
+-const char *defaults_get_entry_attr(void);
+-const char *defaults_get_value_attr(void);
++struct ldap_schema *defaults_get_default_schema(void);
++struct ldap_schema *defaults_get_schema(void);
+ unsigned int defaults_get_append_options(void);
+ const char *defaults_get_auth_conf_file(void);
+ 
+diff --git a/include/lookup_ldap.h b/include/lookup_ldap.h
+index 0a9deca..1378b9e 100644
+--- a/include/lookup_ldap.h
++++ b/include/lookup_ldap.h
+@@ -10,6 +10,14 @@
+ #include <krb5.h>
+ #endif
+ 
++struct ldap_schema {
++	char *map_class;
++	char *map_attr;
++	char *entry_class;
++	char *entry_attr;
++	char *value_attr;
++};
++
+ struct lookup_context {
+ 	char *mapname;
+ 
+@@ -22,11 +30,7 @@ struct lookup_context {
+ 	int version;
+ 
+ 	/* LDAP lookup configuration */
+-	char *map_obj_class;
+-	char *entry_obj_class;
+-	char *map_attr;
+-	char *entry_attr;
+-	char *value_attr;
++	struct ldap_schema *schema;
+ 
+ 	/* TLS and SASL authentication information */
+ 	char        *auth_conf;
+diff --git a/lib/defaults.c b/lib/defaults.c
+index 4b4acba..b146f13 100644
+--- a/lib/defaults.c
++++ b/lib/defaults.c
+@@ -18,6 +18,7 @@
+ #include <string.h>
+ 
+ #include "defaults.h"
++#include "lookup_ldap.h"
+ #include "log.h"
+ 
+ #define DEFAULTS_CONFIG_FILE		AUTOFS_CONF_DIR "/autofs"
+@@ -41,16 +42,8 @@
+ #define ENV_AUTH_CONF_FILE		"AUTH_CONF_FILE"
+ 
+ static const char *default_master_map_name = DEFAULT_MASTER_MAP_NAME;
+-
+-static const char *default_ldap_server		= DEFAULT_LDAP_SERVER;
+-
+-static const char *default_map_obj_class	= DEFAULT_MAP_OBJ_CLASS;
+-static const char *default_entry_obj_class	= DEFAULT_ENTRY_OBJ_CLASS;
+-static const char *default_map_attr		= DEFAULT_MAP_ATTR;
+-static const char *default_entry_attr		= DEFAULT_ENTRY_ATTR;
+-static const char *default_value_attr		= DEFAULT_VALUE_ATTR;
+-
+-static const char *default_auth_conf_file = DEFAULT_AUTH_CONF_FILE;
++static const char *default_ldap_server	   = DEFAULT_LDAP_SERVER;
++static const char *default_auth_conf_file  = DEFAULT_AUTH_CONF_FILE;
+ 
+ static char *get_env_string(const char *name)
+ {
+@@ -285,59 +278,120 @@ const char *defaults_get_ldap_server(void)
+ 	return (const char *) server;
+ }
+ 
+-const char *defaults_get_map_obj_class(void)
++struct ldap_schema *defaults_get_default_schema(void)
+ {
+-	char *moc;
++	struct ldap_schema *schema;
++	char *mc, *ma, *ec, *ea, *va;
+ 
+-	moc = get_env_string(ENV_NAME_MAP_OBJ_CLASS);
+-	if (!moc)
+-		return strdup(default_map_obj_class);
++	mc = strdup(DEFAULT_MAP_OBJ_CLASS);
++	if (!mc)
++		return NULL;
+ 
+-	return (const char *) moc;
+-}
++	ma = strdup(DEFAULT_MAP_ATTR);
++	if (!ma) {
++		free(mc);
++		return NULL;
++	}
+ 
+-const char *defaults_get_entry_obj_class(void)
+-{
+-	char *eoc;
++	ec = strdup(DEFAULT_ENTRY_OBJ_CLASS);
++	if (!ec) {
++		free(mc);
++		free(ma);
++		return NULL;
++	}
+ 
+-	eoc = get_env_string(ENV_NAME_ENTRY_OBJ_CLASS);
+-	if (!eoc)
+-		return strdup(default_entry_obj_class);
++	ea = strdup(DEFAULT_ENTRY_ATTR);
++	if (!ea) {
++		free(mc);
++		free(ma);
++		free(ec);
++		return NULL;
++	}
+ 
+-	return (const char *) eoc;
+-}
++	va = strdup(DEFAULT_VALUE_ATTR);
++	if (!va) {
++		free(mc);
++		free(ma);
++		free(ec);
++		free(ea);
++		return NULL;
++	}
+ 
+-const char *defaults_get_map_attr(void)
+-{
+-	char *ma;
++	schema = malloc(sizeof(struct ldap_schema));
++	if (!schema) {
++		free(mc);
++		free(ma);
++		free(ec);
++		free(ea);
++		free(va);
++		return NULL;
++	}
+ 
+-	ma = get_env_string(ENV_NAME_MAP_ATTR);
+-	if (!ma)
+-		return strdup(default_map_attr);
++	schema->map_class = mc;
++	schema->map_attr = ma;
++	schema->entry_class = ec;
++	schema->entry_attr = ea;
++	schema->value_attr = va;
+ 
+-	return (const char *) ma;
++	return schema;
+ }
+ 
+-const char *defaults_get_entry_attr(void)
++struct ldap_schema *defaults_get_schema(void)
+ {
+-	char *ea;
++	struct ldap_schema *schema;
++	char *mc, *ma, *ec, *ea, *va;
+ 
+-	ea = get_env_string(ENV_NAME_ENTRY_ATTR);
+-	if (!ea)
+-		return strdup(default_entry_attr);
++	mc = get_env_string(ENV_NAME_MAP_OBJ_CLASS);
++	if (!mc)
++		return NULL;
+ 
+-	return (const char *) ea;
+-}
++	ma = get_env_string(ENV_NAME_MAP_ATTR);
++	if (!ma) {
++		free(mc);
++		return NULL;
++	}
+ 
+-const char *defaults_get_value_attr(void)
+-{
+-	char *va;
++	ec = get_env_string(ENV_NAME_ENTRY_OBJ_CLASS);
++	if (!ec) {
++		free(mc);
++		free(ma);
++		return NULL;
++	}
++
++	ea = get_env_string(ENV_NAME_ENTRY_ATTR);
++	if (!ea) {
++		free(mc);
++		free(ma);
++		free(ec);
++		return NULL;
++	}
+ 
+ 	va = get_env_string(ENV_NAME_VALUE_ATTR);
+-	if (!va)
+-		return strdup(default_value_attr);
++	if (!va) {
++		free(mc);
++		free(ma);
++		free(ec);
++		free(ea);
++		return NULL;
++	}
++
++	schema = malloc(sizeof(struct ldap_schema));
++	if (!schema) {
++		free(mc);
++		free(ma);
++		free(ec);
++		free(ea);
++		free(va);
++		return NULL;
++	}
++
++	schema->map_class = mc;
++	schema->map_attr = ma;
++	schema->entry_class = ec;
++	schema->entry_attr = ea;
++	schema->value_attr = va;
+ 
+-	return (const char *) va;
++	return schema;
+ }
+ 
+ unsigned int defaults_get_append_options(void)
+diff --git a/man/auto.master.5.in b/man/auto.master.5.in
+index 69c796e..249c9a7 100644
+--- a/man/auto.master.5.in
++++ b/man/auto.master.5.in
+@@ -191,17 +191,25 @@ The old style
+ is also understood. Alternatively, the type can be obtained from the Name Service Switch
+ configuration, in which case the map name alone must be given.
+ .P
+-The default LDAP schema is the NIS schema described in RFC 2307.
+-Entries in the nisMap schema are \fBnisObject\fP objects in
++If no schema is set in the autofs configuration then autofs will check
++each of the commonly used schema for a valid entry and if one is found
++it will used for subsequent lookups.
++.P
++There are three common schemas in use:
++.TP
++.I nisMap
++Entries in the \fBnisMap\fP schema are \fBnisObject\fP objects in
+ the specified subtree, where the \fBcn\fP attribute is the key
+ (the wildcard key is "/"), and the \fBnisMapEntry\fP attribute
+ contains the information used by the automounter.
+-.P
+-Entries in the automountMap schema are \fBautomount\fP objects in
+-the specified subtree, where the \fBcn\fP or \fBautomountKey\fP attribute
+-(depending on local usage) is the key (the wildcard key is "/"), and the
+-\fBautomountInformation\fP attribute contains the information used by the
+-automounter.
++.TP
++.I automountMap
++The \fBautomountMap\fP schema has two variations that differ in the attribute
++used for the map key. Entries in the automountMap schema are \fBautomount\fP
++objects in the specified subtree, where the \fBcn\fP or \fBautomountKey\fP
++attribute (depending on local usage) is the key (the wildcard key is "/"),
++and the \fBautomountInformation\fP attribute contains the information used
++by the automounter. Note that the \fBcn\fP attribute is case insensitive.
+ .P
+ The object classes and attributes used for accessing automount maps in
+ LDAP can be changed by setting entries in the autofs configuration
+@@ -209,61 +217,44 @@ located in
+ .nh
+ .BR @@autofsconfdir@@/autofs .
+ .hy
++.TP
++.B NOTE:
++If a schema is given in the configuration then all the schema configuration
++values must be set, any partial schema specification will be ignored.
+ .P
+ The configuration settings available are:
+ .TP
+-\fBMAP_OBJECT_CLASS\fP
+-The map object class. Its Default value is "nisMap". In the
+-.nh
+-automountMap
+-.hy
+-schema this corresponds to the class
+-.nh
+-.BR automountMap .
+-.hy
++.B MAP_OBJECT_CLASS
++The map object class. In the \fBnisMap\fP schema this corresponds to the class
++\fBnisMap\fP and in the \fBautomountMap\fP schema it corresponds to the class
++\fBautomountMap\fP.
+ .TP
+ .B ENTRY_OBJECT_CLASS
+-The map entry object class. Its default value is \fBnisObject\fP.
+-In the automountMap schema this corresponds to the class
+-.nh
+-.BR automount .
+-.hy
++The map entry object class. In the \fBnisMap\fP schema this corresponds
++to the class \fBnisObject\fP and in the \fBautomountMap\fP schema it
++corresponds to the class \fBautomount\fP.
+ .TP
+ .B MAP_ATTRIBUTE
+ The attribute used to identify the name of the map to which this
+-entry belongs. Its default value is
+-.nh
+-.BR nisMapName .
+-.hy
+-In the
+-.nh
+-automountMap
+-.hy
+-schema this corresponds to the attributes \fBou\fP or
+-.nh
+-.BR automountMapName .
+-.hy
++entry belongs.  In the \fBnisMap\fP schema this corresponds to the attribute
++\fBnisMapName\fP and in the \fBautomountMap\fP schema it corresponds to the
<<Diff was trimmed, longer than 597 lines>>


More information about the pld-cvs-commit mailing list