From c1b5068fe4011c835ffc035bbbc9106a32e52f61 Mon Sep 17 00:00:00 2001
From: Kurt Zeilenga <kurt@openldap.org>
Date: Fri, 20 Aug 1999 00:55:22 +0000
Subject: [PATCH] Apply Hallvard's memory leak plugs...

---
 clients/tools/ldapmodify.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/clients/tools/ldapmodify.c b/clients/tools/ldapmodify.c
index e58dc3c695..729a6d1cd8 100644
--- a/clients/tools/ldapmodify.c
+++ b/clients/tools/ldapmodify.c
@@ -409,7 +409,7 @@ process_ldif_rec( char *rbuf, int count )
 		}
 		expect_ct = 1;
 	    }
-	    continue;	/* skip all lines until we see "dn:" */
+	    goto end_line;	/* skip all lines until we see "dn:" */
 	}
 
 	if ( expect_ct ) {
@@ -419,6 +419,8 @@ process_ldif_rec( char *rbuf, int count )
 			"\t(LDAP host/port does not match replica: lines)\n",
 			prog, dn );
 		free( dn );
+		ber_memfree( type );
+		ber_memfree( value );
 		return( 0 );
 	    }
 
@@ -441,7 +443,7 @@ process_ldif_rec( char *rbuf, int count )
 			    prog, T_CHANGETYPESTR, value, linenum, dn );
 		    rc = LDAP_PARAM_ERROR;
 		}
-		continue;
+		goto end_line;
 	    } else if ( new ) {		/*  missing changetype => add */
 		new_entry = 1;
 		modop = LDAP_MOD_ADD;
@@ -455,14 +457,14 @@ process_ldif_rec( char *rbuf, int count )
 	    expect_sep = 1;
 	    if ( strcasecmp( type, T_MODOPADDSTR ) == 0 ) {
 		modop = LDAP_MOD_ADD;
-		continue;
+		goto end_line;
 	    } else if ( strcasecmp( type, T_MODOPREPLACESTR ) == 0 ) {
 		modop = LDAP_MOD_REPLACE;
-		continue;
+		goto end_line;
 	    } else if ( strcasecmp( type, T_MODOPDELETESTR ) == 0 ) {
 		modop = LDAP_MOD_DELETE;
 		addmodifyop( &pmods, modop, value, NULL, 0 );
-		continue;
+		goto end_line;
 	    } else {	/* no modify op:  use default */
 		modop = replace ? LDAP_MOD_REPLACE : LDAP_MOD_ADD;
 	    }
@@ -512,6 +514,10 @@ process_ldif_rec( char *rbuf, int count )
 	} else {
 	    addmodifyop( &pmods, modop, type, value, vlen );
 	}
+
+end_line:
+	ber_memfree( type );
+	ber_memfree( value );
     }
 
 	if( linenum == 0 ) {
-- 
GitLab