From 8169359944e13d36433e07b4a37ec7d69537d145 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Thu, 2 Feb 2023 15:03:51 +0000 Subject: [PATCH] ITS#9995 ldapdelete: plug potential search leak --- clients/tools/ldapdelete.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/clients/tools/ldapdelete.c b/clients/tools/ldapdelete.c index 6024a33293..e572e4394e 100644 --- a/clients/tools/ldapdelete.c +++ b/clients/tools/ldapdelete.c @@ -386,7 +386,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 ); @@ -402,15 +404,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 ) { @@ -421,7 +422,7 @@ more:; if ( rc != LDAP_SUCCESS ) { tool_perror( "ldap_delete", rc, NULL, NULL, NULL, NULL ); ber_memfree( dn ); - return rc; + goto leave; } @@ -433,6 +434,7 @@ more:; } } +leave: ldap_msgfree( res ); if ( srch_rc == LDAP_SIZELIMIT_EXCEEDED ) { -- 2.47.2