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
 }
 '
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to