From: Quanah Gibson-Mount Date: Tue, 12 Feb 2008 00:16:18 +0000 (+0000) Subject: ITS#5319 X-Git-Tag: OPENLDAP_REL_ENG_2_4_8~60 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=d72244cd593987caf388756daf80873664ceb84a;p=openldap ITS#5319 --- diff --git a/CHANGES b/CHANGES index 727dee2a14..42cde2dcf0 100644 --- a/CHANGES +++ b/CHANGES @@ -20,6 +20,7 @@ OpenLDAP 2.4.8 Engineering Fixed slapd NULL set values (ITS#5286) Fixed slapd segv with SASL/OTP (ITS#5259) Fixed slapd-bdb segv with bdb4.6 (ITS#5322) + Fixed slapd-bdb modrdn to same dn (ITS#5319) Added slapd-bdb/slapd-hdb DB encryption (ITS#5359) Fixed slapd-ldif delete (ITS#5265) Fixed slapd-monitor crash (ITS#5311) diff --git a/servers/slapd/back-bdb/modrdn.c b/servers/slapd/back-bdb/modrdn.c index c5bd76f136..677e1cc285 100644 --- a/servers/slapd/back-bdb/modrdn.c +++ b/servers/slapd/back-bdb/modrdn.c @@ -559,6 +559,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 65e2af3992..a3bc64d55d 100755 --- a/tests/scripts/test005-modrdn +++ b/tests/scripts/test005-modrdn @@ -261,6 +261,36 @@ case $RC in ;; esac +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"