ITS#8266 Allow empty mods

This commit is contained in:
Ondřej Kuzník 2015-11-22 18:36:45 +00:00 committed by Quanah Gibson-Mount
parent 207fde15eb
commit 46c85a32ae
2 changed files with 28 additions and 16 deletions

View File

@ -1170,6 +1170,11 @@ unique_modify(
Debug(LDAP_DEBUG_TRACE, "==> unique_modify <%s>\n",
op->o_req_dn.bv_val, 0, 0);
if ( !op->orm_modlist ) {
Debug(LDAP_DEBUG_TRACE, "unique_modify: got empty modify op\n", 0, 0, 0);
return rc;
}
/* skip the checks if the operation has manageDsaIt control in it
* (for replication) */
if ( op->o_managedsait > SLAP_CONTROL_IGNORED
@ -1203,22 +1208,14 @@ unique_modify(
&& !dnIsSuffix( &op->o_req_ndn, &uri->ndn ))
continue;
if ( !(m = op->orm_modlist) ) {
op->o_bd->bd_info = (BackendInfo *) on->on_info;
send_ldap_error(op, rs, LDAP_INVALID_SYNTAX,
"unique_modify() got null op.orm_modlist");
rc = rs->sr_err;
break;
} else
for ( ; m; m = m->sml_next)
if ( (m->sml_op & LDAP_MOD_OP)
!= LDAP_MOD_DELETE )
ks += count_filter_len
( domain,
uri,
m->sml_desc,
m->sml_values);
for ( m = op->orm_modlist; m; m = m->sml_next)
if ( (m->sml_op & LDAP_MOD_OP)
!= LDAP_MOD_DELETE )
ks += count_filter_len
( domain,
uri,
m->sml_desc,
m->sml_values);
/* skip this domain-uri if it isn't involved */
if ( !ks ) continue;

View File

@ -555,6 +555,21 @@ if test $RC != 0 ; then
exit -1
fi
echo "Sending an empty modification"
$LDAPMODIFY -D "$UNIQUEDN" -h $LOCALHOST -p $PORT1 -w $PASSWD > \
$TESTOUT 2>&1 << EOF
dn: uid=empty,ou=users,o=unique
changetype: modify
EOF
RC=$?
if test $RC != 0 ; then
echo "spurious unique error ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit -1
fi
echo "Making a record non-unique"
$LDAPMODIFY -D "uid=dave,ou=users,o=unique" -h $LOCALHOST -p $PORT1 -w $PASSWD > \
$TESTOUT 2>&1 << EOF