Hi. The attached patch updates the test slapd config to support OpenLDAP 2.5 in addition to 2.4.

However the test_pamcmds script fails with the new version. The login with the correct password fails, the issue seems to be (from nslcd.log):

2.4/good:

nslcd: [a88611] <authc="vsefcovic"> DEBUG: got 
LDAP_CONTROL_PASSWORDPOLICYRESPONSE (No error)
nslcd: [a88611] <authc="vsefcovic"> DEBUG: myldap_search(base="cn=Veronica 
Sefcovic+uid=vsefcovic,ou=lotsofpeople,dc=test,dc=tld", filter="(objectClass=*)")
nslcd: [a88611] <authc="vsefcovic"> DEBUG: ldap_result(): cn=Veronica 
Sefcovic+uid=vsefcovic,ou=lotsofpeople,dc=test,dc=tld

2.5/bad:

nslcd: [a88611] <authc="vsefcovic"> DEBUG: got 
LDAP_CONTROL_PASSWORDPOLICYRESPONSE (Password must be changed)
nslcd: [a88611] <authc="vsefcovic"> DEBUG: myldap_search(base="cn=Veronica 
Sefcovic+uid=vsefcovic,ou=lotsofpeople,dc=test,dc=tld", filter="(objectClass=*)")
nslcd: [a88611] <authc="vsefcovic"> ldap_result() failed: Insufficient access: 
Operations are restricted to bind/unbind/abandon/StartTLS/modify password

Still looking into it, not sure why the new ppolicy wants the password changed after it was just reset earlier.
>From 333260bde9b87cdc5362904f46507ea7ca06bc89 Mon Sep 17 00:00:00 2001
From: Ryan Tandy <r...@nardis.ca>
Date: Fri, 4 Jun 2021 10:36:23 -0700
Subject: [PATCH] Support running tests with OpenLDAP 2.5

- Change database backend to LMDB
- Load external ppolicy schema conditionally
---
 tests/config.ldif    | 16 ++++++----------
 tests/setup_slapd.sh |  4 ++++
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/tests/config.ldif b/tests/config.ldif
index 66ae428..3e1164e 100644
--- a/tests/config.ldif
+++ b/tests/config.ldif
@@ -10,7 +10,7 @@ olcTimeLimit: unlimited
 dn: cn=module{0},cn=config
 objectClass: olcModuleList
 cn: module{0}
-olcModuleLoad: back_bdb
+olcModuleLoad: back_mdb
 olcModuleLoad: ppolicy
 
 dn: cn=schema,cn=config
@@ -22,7 +22,7 @@ include: file:///etc/ldap/schema/cosine.ldif
 include: file:///etc/ldap/schema/nis.ldif
 include: file:///etc/ldap/schema/inetorgperson.ldif
 include: file:///etc/ldap/schema/misc.ldif
-include: file:///etc/ldap/schema/ppolicy.ldif
+#PPOLICY#include: file:///etc/ldap/schema/ppolicy.ldif
 
 dn: cn=samba,cn=schema,cn=config
 objectClass: olcSchemaConfig
@@ -83,10 +83,10 @@ olcAccess: to *
   by * break
 olcRootDN: cn=admin,cn=config
 
-dn: olcDatabase={1}bdb,cn=config
+dn: olcDatabase={1}mdb,cn=config
 objectClass: olcDatabaseConfig
-objectClass: olcBdbConfig
-olcDatabase: {1}bdb
+objectClass: olcmdbConfig
+olcDatabase: {1}mdb
 olcDbDirectory: @BASEDIR@/ldapdb
 olcSuffix: dc=test,dc=tld
 olcAccess: to attrs=userPassword
@@ -106,13 +106,9 @@ olcAccess: to *
 olcRootDN: cn=admin,dc=test,dc=tld
 olcRootPW: test
 olcDbCheckpoint: 512 30
-olcDbConfig: set_cachesize 0 2097152 0
-olcDbConfig: set_lk_max_objects 1500
-olcDbConfig: set_lk_max_locks 1500
-olcDbConfig: set_lk_max_lockers 1500
 olcDbIndex: objectClass eq
 
-dn: olcOverlay={0}ppolicy,olcDatabase={1}bdb,cn=config
+dn: olcOverlay={0}ppolicy,olcDatabase={1}mdb,cn=config
 objectClass: olcOverlayConfig
 objectClass: olcPPolicyConfig
 olcOverlay: {0}ppolicy
diff --git a/tests/setup_slapd.sh b/tests/setup_slapd.sh
index 8f8874f..2534079 100755
--- a/tests/setup_slapd.sh
+++ b/tests/setup_slapd.sh
@@ -94,6 +94,10 @@ case "$2" in
     echo "Loading cn=config..."
     tmpldif=`mktemp -t slapadd.XXXXXX`
     sed "s|@BASEDIR@|$basedir|g" < "$srcdir/config.ldif" > "$tmpldif"
+    if [ -f /etc/ldap/schema/ppolicy.ldif ]
+    then
+      sed -i "s|#PPOLICY#||g" "$tmpldif"
+    fi
     slapadd -v -F "$basedir/slapd.d" -b "cn=config" -l "$tmpldif" || (echo " FAILED"; exit 1)
     rm -f "$tmpldif"
     echo "Loading dc=test,dc=tld..."
-- 
2.20.1

Reply via email to