Skip to content
Snippets Groups Projects
Commit 676a9288 authored by Pierangelo Masarati's avatar Pierangelo Masarati Committed by Quanah Gibson-Mount
Browse files

more about ITS#7487

parent 337c9e3b
No related branches found
No related tags found
No related merge requests found
......@@ -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 */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment