From 662cb94e06ab708f8588eda44b4cec7e4dfe05f0 Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Tue, 6 Dec 2005 22:54:51 +0000 Subject: [PATCH] helper to destroy modrdn modifications... --- servers/slapd/modrdn.c | 27 +++++++++++++++++++++++++++ servers/slapd/proto-slap.h | 6 ++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/servers/slapd/modrdn.c b/servers/slapd/modrdn.c index e455d71a8a..97f4997826 100644 --- a/servers/slapd/modrdn.c +++ b/servers/slapd/modrdn.c @@ -519,3 +519,30 @@ done: return rs->sr_err; } + +void +slap_modrdn2mods_free( Modifications *mod ) +{ + Modifications *tmp; + + for ( ; mod; mod = tmp ) { + tmp = mod->sml_next; + /* slap_modrdn2mods does things one way, + * slap_mods_opattrs does it differently + */ + if ( mod->sml_op != SLAP_MOD_SOFTADD && + mod->sml_op != LDAP_MOD_DELETE ) + { + break; + } + + if ( mod->sml_nvalues ) { + free( mod->sml_nvalues[0].bv_val ); + } + + free( mod ); + } + + slap_mods_free( mod, 1 ); +} + diff --git a/servers/slapd/proto-slap.h b/servers/slapd/proto-slap.h index e18d9bcca3..0b0fd90cf0 100644 --- a/servers/slapd/proto-slap.h +++ b/servers/slapd/proto-slap.h @@ -1016,13 +1016,15 @@ LDAP_SLAPD_F (int) filter_matched_values( /* * modrdn.c */ -LDAP_SLAPD_F (int) slap_modrdn2mods( +LDAP_SLAPD_F (int) slap_modrdn2mods LDAP_P(( Operation *op, SlapReply *rs, Entry *e, LDAPRDN oldrdn, LDAPRDN newrdn, - Modifications **pmod ); + Modifications **pmod )); + +LDAP_SLAPD_F (void) slap_modrdn2mods_free LDAP_P(( Modifications *mod )); /* * modify.c -- 2.39.5