From 499c9369e1e8eaa39a7bc1babd70cd71ddbfc8d3 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Tue, 12 Dec 2006 19:39:28 +0000 Subject: [PATCH] ITS#4777 fix modlist delete --- servers/slapd/overlays/translucent.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/servers/slapd/overlays/translucent.c b/servers/slapd/overlays/translucent.c index 126a336318..4fc6e1ad1c 100644 --- a/servers/slapd/overlays/translucent.c +++ b/servers/slapd/overlays/translucent.c @@ -302,7 +302,7 @@ static int translucent_modify(Operation *op, SlapReply *rs) { translucent_info *ov = on->on_bi.bi_private; Entry *e = NULL, *re = NULL; Attribute *a, *ax; - Modifications *m, *mm; + Modifications *m, **mm; int del, rc, erc = 0; slap_callback cb = { 0 }; @@ -343,7 +343,9 @@ static int translucent_modify(Operation *op, SlapReply *rs) { if(e && rc == LDAP_SUCCESS) { Debug(LDAP_DEBUG_TRACE, "=> translucent_modify: found local entry\n", 0, 0, 0); - for(m = op->orm_modlist; m; m = m->sml_next) { + for(mm = &op->orm_modlist; *mm; ) { + m = *mm; + mm = &m->sml_next; for(a = e->e_attrs; a; a = a->a_next) if(a->a_desc == m->sml_desc) break; if(a) continue; /* found local attr */ @@ -362,11 +364,9 @@ static int translucent_modify(Operation *op, SlapReply *rs) { Debug(LDAP_DEBUG_TRACE, "=> translucent_modify: silently dropping delete: %s\n", m->sml_desc->ad_cname.bv_val, 0, 0); - for(mm = op->orm_modlist; mm->sml_next != m; mm = mm->sml_next); - mm->sml_next = m->sml_next; + *mm = m->sml_next; m->sml_next = NULL; slap_mods_free(m, 1); - m = mm; continue; } m->sml_op = LDAP_MOD_ADD; -- 2.39.5