mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-30 13:30:57 +08:00
more about ITS#7487
This commit is contained in:
parent
02f8963f74
commit
f6cd91aadb
@ -817,6 +817,7 @@ memberof_op_modify( Operation *op, SlapReply *rs )
|
||||
switch ( ml->sml_op ) {
|
||||
case LDAP_MOD_DELETE:
|
||||
case LDAP_MOD_REPLACE:
|
||||
case SLAP_MOD_SOFTDEL: /* ITS#7487: can be used by syncrepl (in mirror mode?) */
|
||||
save_member = 1;
|
||||
break;
|
||||
}
|
||||
@ -844,6 +845,7 @@ memberof_op_modify( Operation *op, SlapReply *rs )
|
||||
|
||||
switch ( ml->sml_op ) {
|
||||
case LDAP_MOD_DELETE:
|
||||
case SLAP_MOD_SOFTDEL: /* ITS#7487: can be used by syncrepl (in mirror mode?) */
|
||||
/* we don't care about cancellations: if the value
|
||||
* exists, fine; if it doesn't, we let the underlying
|
||||
* database fail as appropriate; */
|
||||
@ -858,6 +860,8 @@ memberof_op_modify( Operation *op, SlapReply *rs )
|
||||
}
|
||||
|
||||
case LDAP_MOD_ADD:
|
||||
case SLAP_MOD_SOFTADD: /* ITS#7487 */
|
||||
case SLAP_MOD_ADD_IF_NOT_PRESENT: /* ITS#7487 */
|
||||
/* NOTE: right now, the attributeType we use
|
||||
* for member must have a normalized value */
|
||||
assert( ml->sml_nvalues != NULL );
|
||||
@ -946,6 +950,7 @@ memberof_op_modify( Operation *op, SlapReply *rs )
|
||||
|
||||
switch ( ml->sml_op ) {
|
||||
case LDAP_MOD_DELETE:
|
||||
case SLAP_MOD_SOFTDEL: /* ITS#7487: can be used by syncrepl (in mirror mode?) */
|
||||
if ( ml->sml_nvalues != NULL ) {
|
||||
AccessControlState acl_state = ACL_STATE_INIT;
|
||||
|
||||
@ -1056,12 +1061,15 @@ memberof_op_modify( Operation *op, SlapReply *rs )
|
||||
goto done2;
|
||||
}
|
||||
|
||||
if ( ml->sml_op == LDAP_MOD_DELETE || !ml->sml_values ) {
|
||||
if ( ml->sml_op == LDAP_MOD_DELETE || ml->sml_op == SLAP_MOD_SOFTDEL || !ml->sml_values ) {
|
||||
break;
|
||||
}
|
||||
/* fall thru */
|
||||
|
||||
case LDAP_MOD_ADD: {
|
||||
case LDAP_MOD_ADD:
|
||||
case SLAP_MOD_SOFTADD: /* ITS#7487 */
|
||||
case SLAP_MOD_ADD_IF_NOT_PRESENT: /* ITS#7487 */
|
||||
{
|
||||
AccessControlState acl_state = ACL_STATE_INIT;
|
||||
|
||||
for ( i = 0; !BER_BVISNULL( &ml->sml_nvalues[ i ] ); i++ ) {
|
||||
@ -1363,6 +1371,7 @@ memberof_res_modify( Operation *op, SlapReply *rs )
|
||||
|
||||
switch ( mml->sml_op ) {
|
||||
case LDAP_MOD_DELETE:
|
||||
case SLAP_MOD_SOFTDEL: /* ITS#7487: can be used by syncrepl (in mirror mode?) */
|
||||
if ( vals != NULL ) {
|
||||
for ( i = 0; !BER_BVISNULL( &vals[ i ] ); i++ ) {
|
||||
memberof_value_modify( op,
|
||||
@ -1396,6 +1405,8 @@ memberof_res_modify( Operation *op, SlapReply *rs )
|
||||
/* fall thru */
|
||||
|
||||
case LDAP_MOD_ADD:
|
||||
case SLAP_MOD_SOFTADD: /* ITS#7487 */
|
||||
case SLAP_MOD_ADD_IF_NOT_PRESENT: /* ITS#7487 */
|
||||
assert( vals != NULL );
|
||||
|
||||
for ( i = 0; !BER_BVISNULL( &vals[ i ] ); i++ ) {
|
||||
@ -1446,7 +1457,7 @@ memberof_res_modify( Operation *op, SlapReply *rs )
|
||||
}
|
||||
}
|
||||
|
||||
if ( ml->sml_op == LDAP_MOD_DELETE || !ml->sml_values ) {
|
||||
if ( ml->sml_op == LDAP_MOD_DELETE || ml->sml_op == SLAP_MOD_SOFTDEL || !ml->sml_values ) {
|
||||
break;
|
||||
}
|
||||
/* fall thru */
|
||||
|
Loading…
Reference in New Issue
Block a user