Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 130701790bf2d95e902edf16031ff596 > files > 160

autofs-5.0.1-0.rc2.164.el5_8.src.rpm

diff --git a/CHANGELOG b/CHANGELOG
index 06ef49b..6007086 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -25,6 +25,7 @@
 - fix parsing of numeric host names in LDAP map specs.
 - fix get_query_dn not looking in subtree for LDAP search (missed second
   occurance).
+- allow additional common LDAP attributes in map dn.
 
 1/9/2006 autofs-5.0.1 rc2
 -------------------------
diff --git a/lib/master_parse.y b/lib/master_parse.y
index a3adf97..6bd7403 100644
--- a/lib/master_parse.y
+++ b/lib/master_parse.y
@@ -29,6 +29,8 @@ #include <sys/ioctl.h>
 #include "automount.h"
 #include "master.h"
 
+#define MAX_ERR_LEN	512
+
 extern struct master *master_list;
 
 char **add_argv(int, char **, char *);
@@ -56,6 +58,8 @@ static unsigned ghost;
 static char **local_argv;
 static int local_argc;
 
+static char errstr[MAX_ERR_LEN];
+
 static unsigned int verbose;
 static unsigned int debug;
 
@@ -311,29 +315,92 @@ dn:	DNSERVER dnattrs
 	}
 	;
 
-dnattrs: dnattr
+dnattrs: DNATTR EQUAL DNNAME
 	{
+		if (strcasecmp($1, "cn") &&
+		    strcasecmp($1, "ou") &&
+		    strcasecmp($1, "automountMapName") &&
+		    strcasecmp($1, "nisMapName")) {
+			strcpy(errstr, $1);
+			strcat(errstr, "=");
+			strcat(errstr, $3);
+			master_notify(errstr);
+			YYABORT;
+		}
 		strcpy($$, $1);
+		strcat($$, "=");
+		strcat($$, $3);
 	}
-	| dnattr COMMA dnattrs
+	| DNATTR EQUAL DNNAME COMMA dnattr
 	{
+		if (strcasecmp($1, "cn") &&
+		    strcasecmp($1, "ou") &&
+		    strcasecmp($1, "automountMapName") &&
+		    strcasecmp($1, "nisMapName")) {
+			strcpy(errstr, $1);
+			strcat(errstr, "=");
+			strcat(errstr, $3);
+			master_notify(errstr);
+			YYABORT;
+		}
 		strcpy($$, $1);
-		strcat($$, ",");
+		strcat($$, "=");
 		strcat($$, $3);
+		strcat($$, ",");
+		strcat($$, $5);
+	}
+	| DNATTR
+	{
+		master_notify($1);
+		YYABORT;
+	}
+	| DNNAME
+	{
+		master_notify($1);
+		YYABORT;
 	}
 	;
 
 dnattr: DNATTR EQUAL DNNAME
 	{
+		if (!strcasecmp($1, "automountMapName") ||
+		    !strcasecmp($1, "nisMapName")) {
+			strcpy(errstr, $1);
+			strcat(errstr, "=");
+			strcat(errstr, $3);
+			master_notify(errstr);
+			YYABORT;
+		}
 		strcpy($$, $1);
 		strcat($$, "=");
 		strcat($$, $3);
 	}
+	| DNATTR EQUAL DNNAME COMMA dnattr
+	{
+		if (!strcasecmp($1, "automountMapName") ||
+		    !strcasecmp($1, "nisMapName")) {
+			strcpy(errstr, $1);
+			strcat(errstr, "=");
+			strcat(errstr, $3);
+			master_notify(errstr);
+			YYABORT;
+		}
+		strcpy($$, $1);
+		strcat($$, "=");
+		strcat($$, $3);
+		strcat($$, ",");
+		strcat($$, $5);
+	}
 	| DNATTR
 	{
 		master_notify($1);
 		YYABORT;
 	}
+	| DNNAME
+	{
+		master_notify($1);
+		YYABORT;
+	}
 	;
 
 options: option {}
diff --git a/lib/master_tok.l b/lib/master_tok.l
index a699797..cf90136 100644
--- a/lib/master_tok.l
+++ b/lib/master_tok.l
@@ -98,7 +98,7 @@ DNSERVSTR2	(\/\/[[:alpha:]][[:alnum:]\-.
 DNSERVSTR3	(([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}(:[0-9]+)?:)
 DNSERVSTR4	(\/\/([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}(:[0-9]+)?\/)
 DNSERVERSTR	{DNSERVSTR1}|{DNSERVSTR2}|{DNSERVSTR3}|{DNSERVSTR4}
-DNATTRSTR	(ou|cn|nisMapName|automountMapName|dc)
+DNATTRSTR	(cn|nisMapName|automountMapName|ou|dc|o|c)
 DNNAMESTR	([[:alnum:]_.\-]+)
 
 INTMAP		(-hosts|-null)