From 8b2e8ece5c6628a1027994fa72a807939a9d10a3 Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Mon, 15 Jan 2007 15:02:14 +0000 Subject: [PATCH] fix leak (ITS#4805) --- servers/slapd/syncrepl.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/servers/slapd/syncrepl.c b/servers/slapd/syncrepl.c index 33e4534425..e26db39b85 100644 --- a/servers/slapd/syncrepl.c +++ b/servers/slapd/syncrepl.c @@ -1382,7 +1382,7 @@ syncrepl_message_to_entry( char txtbuf[SLAP_TEXT_BUFLEN]; size_t textlen = sizeof txtbuf; - struct berval bdn = {0, NULL}, dn, ndn; + struct berval bdn = BER_BVNULL, dn, ndn; int rc; *modlist = NULL; @@ -1397,7 +1397,6 @@ syncrepl_message_to_entry( op->o_tag = LDAP_REQ_ADD; rc = ldap_get_dn_ber( si->si_ld, msg, &ber, &bdn ); - if ( rc != LDAP_SUCCESS ) { Debug( LDAP_DEBUG_ANY, "syncrepl_message_to_entry: rid %03ld dn get failed (%d)", @@ -1412,13 +1411,15 @@ syncrepl_message_to_entry( slap_sl_free( dn.bv_val, op->o_tmpmemctx ); if ( syncstate == LDAP_SYNC_PRESENT || syncstate == LDAP_SYNC_DELETE ) { - if ( entry ) - *entry = NULL; - return LDAP_SUCCESS; + /* NOTE: this could be done even before decoding the DN, + * although encoding errors wouldn't be detected */ + rc = LDAP_SUCCESS; + goto done; } if ( entry == NULL ) { - return -1; + rc = -1; + goto done; } e = entry_alloc(); @@ -1493,7 +1494,7 @@ syncrepl_message_to_entry( } done: - ber_free ( ber, 0 ); + ber_free( ber, 0 ); if ( rc != LDAP_SUCCESS ) { if ( e ) { entry_free( e ); -- 2.39.5