svn commit: r280321 - head/etc/autofs

Edward Tomasz Napierala trasz at FreeBSD.org
Sat Mar 21 09:42:39 UTC 2015


Author: trasz
Date: Sat Mar 21 09:42:37 2015
New Revision: 280321
URL: https://svnweb.freebsd.org/changeset/base/280321

Log:
  Make the autofs LDAP script cope with server returning entries with
  ENTRY_ATTRIBUTE (eg cn) after the VALUE_ATTRIBUTE (eg automountInformation),
  instead of before.
  
  PR:		198557
  MFC after:	1 month
  Sponsored by:	The FreeBSD Foundation

Modified:
  head/etc/autofs/include_ldap

Modified: head/etc/autofs/include_ldap
==============================================================================
--- head/etc/autofs/include_ldap	Sat Mar 21 06:44:41 2015	(r280320)
+++ head/etc/autofs/include_ldap	Sat Mar 21 09:42:37 2015	(r280321)
@@ -15,24 +15,41 @@ $1 == "'$ENTRY_ATTRIBUTE':" {
 	key = $2
 }
 
-$1 == "'$VALUE_ATTRIBUTE':" && key {
-	printf "%s%s", key, OFS
-	key = ""
-	for (i=2; i<NF; i++) {
-		printf "%s%s", $(i), OFS
+$1 == "'$VALUE_ATTRIBUTE':" {
+	for (i = 2; i <= NF; i++) {
+		value[i] = $(i)
 	}
-	printf "%s%s", $NF, ORS
+	nvalues = NF
+	b64 = 0
 }
 
 # Double colon after attribute name means the value is in Base64.
-$1 == "'$VALUE_ATTRIBUTE'::" && key {
+$1 == "'$VALUE_ATTRIBUTE'::" {
+	for (i = 2; i <= NF; i++) {
+		value[i] = $(i)
+	}
+	nvalues = NF
+	b64 = 1
+}
+
+# Empty line - end of record.
+NF == 0 && key != "" && nvalues > 0 {
 	printf "%s%s", key, OFS
-	key = ""
-	for (i=2; i<NF; i++) {
-		printf "%s%s", $(i), OFS
+	for (i = 2; i < nvalues; i++) {
+		printf "%s%s", value[i], OFS
+	}
+	if (b64 == 1) {
+		printf "%s", value[nvalues] | "b64decode -rp"
+		close("b64decode -rp")
+		printf "%s", ORS
+	} else {
+		printf "%s%s", value[nvalues], ORS
 	}
-	printf "%s", $NF | "b64decode -rp"
-	close("b64decode -rp")
-	printf "%s", ORS
+}
+
+NF == 0 {
+	key = ""
+	nvalues = 0
+	delete value
 }
 '


More information about the svn-src-head mailing list