From: Quanah Gibson-Mount Date: Tue, 12 Feb 2008 00:20:28 +0000 (+0000) Subject: ITS#5319 X-Git-Tag: OPENLDAP_REL_ENG_2_3_41~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5a50224f13db4f15dd784af89a53340c8cbf94cd;p=thirdparty%2Fopenldap.git ITS#5319 --- diff --git a/CHANGES b/CHANGES index 2ba2e82b03..d7a64bfc6b 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,7 @@ OpenLDAP 2.3 Change Log OpenLDAP 2.3.41 Engineering Fixed slapd idlcache on adds (ITS#5086) + Fixed slapd-bdb modrdn to same dn (ITS#5319) Fixed syncrepl propagation of errors (ITS#5282) Fixed crash when no-op control is used (ITS#5358) diff --git a/servers/slapd/back-bdb/modrdn.c b/servers/slapd/back-bdb/modrdn.c index 6cebe9e049..d2bf1cbbc2 100644 --- a/servers/slapd/back-bdb/modrdn.c +++ b/servers/slapd/back-bdb/modrdn.c @@ -519,6 +519,9 @@ retry: /* transaction retry */ case DB_NOTFOUND: break; case 0: + /* Allow rename to same DN */ + if ( nei == ei ) + break; rs->sr_err = LDAP_ALREADY_EXISTS; goto return_results; default: diff --git a/tests/scripts/test005-modrdn b/tests/scripts/test005-modrdn index 9abb7b7105..0b73a62ce7 100755 --- a/tests/scripts/test005-modrdn +++ b/tests/scripts/test005-modrdn @@ -233,6 +233,36 @@ if test $RC -eq 0 ; then exit 1 fi +echo "Testing modrdn with newRdn exact same as target..." +$LDAPMODRDN -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD > \ + $TESTOUT 2>&1 'cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example, dc=com' 'cn=James A Jones 1' + +RC=$? +case $RC in +0) + ;; +*) + echo "ldapmodrdn failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC + ;; +esac + +echo "Testing modrdn with newRdn same as target, changed case..." +$LDAPMODRDN -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD > \ + $TESTOUT 2>&1 'cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example, dc=com' 'cn=James A JONES 1' + +RC=$? +case $RC in +0) + ;; +*) + echo "ldapmodrdn failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC + ;; +esac + test $KILLSERVERS != no && kill -HUP $KILLPIDS echo ">>>>> Test succeeded"