From: Howard Chu Date: Thu, 2 Feb 2023 15:03:51 +0000 (+0000) Subject: ITS#9995 ldapdelete: plug potential search leak X-Git-Tag: OPENLDAP_REL_ENG_2_6_5~62 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4a35c30e3094c38a9fd98f848ce2c34544514baa;p=thirdparty%2Fopenldap.git ITS#9995 ldapdelete: plug potential search leak --- diff --git a/clients/tools/ldapdelete.c b/clients/tools/ldapdelete.c index 60379732dc..a66900d480 100644 --- a/clients/tools/ldapdelete.c +++ b/clients/tools/ldapdelete.c @@ -389,7 +389,9 @@ more:; break; default: tool_perror( "ldap_search", srch_rc, NULL, NULL, NULL, NULL ); - return( srch_rc ); + rc = srch_rc; + srch_rc = 0; + goto leave; } entries = ldap_count_entries( ld, res ); @@ -405,15 +407,14 @@ more:; if( dn == NULL ) { ldap_get_option( ld, LDAP_OPT_RESULT_CODE, &rc ); tool_perror( "ldap_prune", rc, NULL, NULL, NULL, NULL ); - ber_memfree( dn ); - return rc; + goto leave; } rc = deletechildren( ld, dn, 0 ); if ( rc != LDAP_SUCCESS ) { tool_perror( "ldap_prune", rc, NULL, NULL, NULL, NULL ); ber_memfree( dn ); - return rc; + goto leave; } if ( verbose ) { @@ -424,7 +425,7 @@ more:; if ( rc != LDAP_SUCCESS ) { tool_perror( "ldap_delete", rc, NULL, NULL, NULL, NULL ); ber_memfree( dn ); - return rc; + goto leave; } @@ -436,6 +437,7 @@ more:; } } +leave: ldap_msgfree( res ); if ( srch_rc == LDAP_SIZELIMIT_EXCEEDED ) {