summaryrefslogtreecommitdiffstats
path: root/etc/autofs
diff options
context:
space:
mode:
authortrasz <trasz@FreeBSD.org>2015-03-21 09:42:37 +0000
committertrasz <trasz@FreeBSD.org>2015-03-21 09:42:37 +0000
commit3a38addca2bf19f4785c67fc295314e91a6cfd30 (patch)
tree775da5c686d8321b25e1f0bee730235ed7868bab /etc/autofs
parentaf26fa936a573ca25398a9fd792f7c31d1af9f7d (diff)
downloadFreeBSD-src-3a38addca2bf19f4785c67fc295314e91a6cfd30.zip
FreeBSD-src-3a38addca2bf19f4785c67fc295314e91a6cfd30.tar.gz
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
Diffstat (limited to 'etc/autofs')
-rw-r--r--etc/autofs/include_ldap43
1 files changed, 30 insertions, 13 deletions
diff --git a/etc/autofs/include_ldap b/etc/autofs/include_ldap
index 58970c0..4cf70bf 100644
--- a/etc/autofs/include_ldap
+++ b/etc/autofs/include_ldap
@@ -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
}
'
OpenPOWER on IntegriCloud