+# Searching database...
dn: dc=example,dc=com
objectClass: domain
objectClass: domainRelatedObject
member:: Y249QmVmb3JlDUFmdGVyLGRjPWV4YW1wbGUsZGM9bmV0
member: cn=\23John Smith\20,dc=example,dc=net
member:: Y249THXEjWnEhw==
-member: testUUID=597ae2f6-16a6-1027-98f4-d28b5365dc14,dc=Example
+member: testUUID=597ae2f6-16a6-1027-98f4-abcdefabcdef,dc=Example
seeAlso: cn=John Smith\2C III,dc=example,dc=net
seeAlso: ou=Sales\3B Data\2BAlgorithms,dc=example,dc=net
seeAlso: cn=\23John Smith\20,dc=example,dc=net
description: CN=\23John Smith\20,DC=example,DC=net
description: CN=\#John Smith\ ,DC=example,DC=net
description: CN=Lu\C4\8Di\C4\87
-description: testUUID=597ae2f6-16a6-1027-98f4-d28b5365dc14,DC=Example
+description: testUUID=597ae2f6-16a6-1027-98f4-abcdefABCDEF,DC=Example
dn: cn=Unescaped Equals,ou=LDAPv3,dc=example,dc=com
objectClass: groupOfNames
description: dc=example,dc=com#'0B // malformed UID?
description: dc=example,dc=com '0'B // malformed UID?
+# Searching database for DN="OU=Sales+CN=J. Smith,DC=example,DC=net"...
dn: cn=Must Succeed,ou=LDAPv3,dc=example,dc=com
objectClass: groupOfNames
cn: Must Succeed
member:: Y249QmVmb3JlDUFmdGVyLGRjPWV4YW1wbGUsZGM9bmV0
member: cn=\23John Smith\20,dc=example,dc=net
member:: Y249THXEjWnEhw==
-member: testUUID=597ae2f6-16a6-1027-98f4-d28b5365dc14,dc=Example
+member: testUUID=597ae2f6-16a6-1027-98f4-abcdefabcdef,dc=Example
seeAlso: cn=John Smith\2C III,dc=example,dc=net
seeAlso: ou=Sales\3B Data\2BAlgorithms,dc=example,dc=net
seeAlso: cn=\23John Smith\20,dc=example,dc=net
description: CN=\23John Smith\20,DC=example,DC=net
description: CN=\#John Smith\ ,DC=example,DC=net
description: CN=Lu\C4\8Di\C4\87
-description: testUUID=597ae2f6-16a6-1027-98f4-d28b5365dc14,dc=Example
+description: testUUID=597ae2f6-16a6-1027-98f4-abcdefABCDEF,DC=Example
+# Searching database for entryUUID-named DN="testUUID=597ae2f6-16a6-1027-98f4-ABCDEFabcdef,DC=Example"...
+dn: cn=Must Succeed,ou=LDAPv3,dc=example,dc=com
+objectClass: groupOfNames
+cn: Must Succeed
+member: cn=Must Succeed,ou=LDAPv3,dc=example,dc=com
+member:
+member: uid=jsmith,dc=example,dc=net
+member: cn=J. Smith+ou=Sales,dc=example,dc=net
+member: cn=John Smith\2C III,dc=example,dc=net
+member: ou=Sales\3B Data\2BAlgorithms,dc=example,dc=net
+member:: Y249QmVmb3JlDUFmdGVyLGRjPWV4YW1wbGUsZGM9bmV0
+member: cn=\23John Smith\20,dc=example,dc=net
+member:: Y249THXEjWnEhw==
+member: testUUID=597ae2f6-16a6-1027-98f4-abcdefabcdef,dc=Example
+seeAlso: cn=John Smith\2C III,dc=example,dc=net
+seeAlso: ou=Sales\3B Data\2BAlgorithms,dc=example,dc=net
+seeAlso: cn=\23John Smith\20,dc=example,dc=net
+description: "member" values contain specific DN forms;
+description: "seeAlso" values contain DN forms already defined as "member",
+description: but in a different string representation;
+description: the following "description" values contain the "member" and
+description: "seeAlso" DN string representations used above.
+description: ""
+description: UID=jsmith,DC=example,DC=net
+description: OU=Sales+CN=J. Smith,DC=example,DC=net
+description: CN=John Smith\, III,DC=example,DC=net
+description: CN=John Smith\2C III,DC=example,DC=net
+description: OU=Sales\; Data\+Algorithms,DC=example,DC=net
+description: OU=Sales\3B Data\2BAlgorithms,DC=example,DC=net
+description: CN=Before\0dAfter,DC=example,DC=net
+description: CN=\23John Smith\20,DC=example,DC=net
+description: CN=\#John Smith\ ,DC=example,DC=net
+description: CN=Lu\C4\8Di\C4\87
+description: testUUID=597ae2f6-16a6-1027-98f4-abcdefABCDEF,DC=Example
+
+# Searching database for nameAndOptionalUID="dc=example,dc=com"...
+# Searching database for nameAndOptionalUID="dc=example,dc=com#'001000'B"...
dn: cn=Name and Optional UID,ou=Related Syntaxes,dc=example,dc=com
objectClass: groupOfUniqueNames
cn: Name and Optional UID
description: dc=example,dc=com#'1000'B // with DN portion
description: dc=example,dc=com#'0'B // with DN portion and just one '0'
+# Searching database for uniqueMember~="dc=example,dc=com" (approx) ...
dn: cn=Name and Optional UID,ou=Related Syntaxes,dc=example,dc=com
objectClass: groupOfUniqueNames
cn: Name and Optional UID
description: dc=example,dc=com#'1000'B // with DN portion
description: dc=example,dc=com#'0'B // with DN portion and just one '0'
+# Searching database for uniqueMember~="dc=example,dc=com#'001000'B" (approx) ...
dn: cn=Name and Optional UID,ou=Related Syntaxes,dc=example,dc=com
objectClass: groupOfUniqueNames
cn: Name and Optional UID
$LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD -c -f $LDIFDN > \
$TESTOUT 2>&1
+cat /dev/null > $SEARCHOUT
+
echo "Searching database..."
-$LDAPSEARCH -b "$BASEDN" -h $LOCALHOST -p $PORT1 > $SEARCHOUT 2>&1
+echo "# Searching database..." >> $SEARCHOUT
+$LDAPSEARCH -b "$BASEDN" -h $LOCALHOST -p $PORT1 >> $SEARCHOUT 2>&1
+
+RC=$?
+if test $RC != 0 ; then
+ echo "ldapsearch failed ($RC)!"
+ test $KILLSERVERS != no && kill -HUP $KILLPIDS
+ exit $RC
+fi
+
+DN="OU=Sales+CN=J. Smith,DC=example,DC=net"
+echo "Searching database for DN=\"$DN\"..."
+echo "# Searching database for DN=\"$DN\"..." >> $SEARCHOUT
+$LDAPSEARCH -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
+ "(member=$DN)" >> $SEARCHOUT 2>&1
RC=$?
if test $RC != 0 ; then
exit $RC
fi
-echo "Searching database for DN..."
+DN="testUUID=597ae2f6-16a6-1027-98f4-ABCDEFabcdef,DC=Example"
+echo "Searching database for entryUUID-named DN=\"$DN\"..."
+echo "# Searching database for entryUUID-named DN=\"$DN\"..." >> $SEARCHOUT
$LDAPSEARCH -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
- "(member=OU=Sales+CN=J. Smith,DC=example,DC=net)" >> $SEARCHOUT 2>&1
+ "(member=$DN)" \
+ >> $SEARCHOUT 2>&1
RC=$?
if test $RC != 0 ; then
exit $RC
fi
-echo "Searching database for uniqueMember..."
+DN="dc=example,dc=com"
+echo "Searching database for nameAndOptionalUID=\"$DN\"..."
+echo "# Searching database for nameAndOptionalUID=\"$DN\"..." >> $SEARCHOUT
$LDAPSEARCH -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
- "(uniqueMember=dc=example,dc=com)" >> $SEARCHOUT 2>&1
+ "(uniqueMember=$DN)" >> $SEARCHOUT 2>&1
RC=$?
if test $RC != 0 ; then
exit $RC
fi
-echo "Searching database for uniqueMember..."
+DN="dc=example,dc=com#'001000'B"
+echo "Searching database for nameAndOptionalUID=\"$DN\"..."
+echo "# Searching database for nameAndOptionalUID=\"$DN\"..." >> $SEARCHOUT
$LDAPSEARCH -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
- "(uniqueMember=dc=example,dc=com#'001000'B)" >> $SEARCHOUT 2>&1
+ "(uniqueMember=$DN)" >> $SEARCHOUT 2>&1
RC=$?
if test $RC != 0 ; then
exit $RC
fi
-echo "Searching database for uniqueMember (approx) ..."
+DN="dc=example,dc=com"
+echo "Searching database for uniqueMember~=\"$DN\" (approx) ..."
+echo "# Searching database for uniqueMember~=\"$DN\" (approx) ..." >> $SEARCHOUT
$LDAPSEARCH -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
- "(uniqueMember~=dc=example,dc=com)" >> $SEARCHOUT 2>&1
+ "(uniqueMember~=)" >> $SEARCHOUT 2>&1
RC=$?
if test $RC != 0 ; then
exit $RC
fi
-echo "Searching database for uniqueMember (approx) ..."
+DN="dc=example,dc=com#'001000'B"
+echo "Searching database for uniqueMember~=\"$DN\" (approx) ..."
+echo "# Searching database for uniqueMember~=\"$DN\" (approx) ..." >> $SEARCHOUT
$LDAPSEARCH -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
- "(uniqueMember~=dc=example,dc=com#'001000'B)" >> $SEARCHOUT 2>&1
+ "(uniqueMember~=$DN)" >> $SEARCHOUT 2>&1
RC=$?
if test $RC != 0 ; then