changeset 2994:1ed01cfed3a9 HEAD

Fixed crashing due to free()ing too much.
author Timo Sirainen <tss@iki.fi>
date Sun, 19 Dec 2004 07:30:20 +0200
parents 2c92a14458e6
children de524f4a1075
files src/auth/db-ldap.c src/auth/passdb-ldap.c src/auth/userdb-ldap.c
diffstat 3 files changed, 2 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/db-ldap.c	Sun Dec 19 07:11:05 2004 +0200
+++ b/src/auth/db-ldap.c	Sun Dec 19 07:30:20 2004 +0200
@@ -118,6 +118,7 @@
 	if (!conn->connected) {
 		if (!db_ldap_connect(conn)) {
 			request->callback(conn, request, NULL);
+			i_free(request);
 			return;
 		}
 	}
@@ -127,6 +128,7 @@
 		i_error("LDAP: ldap_search() failed (filter %s): %s",
 			filter, ldap_get_error(conn));
 		request->callback(conn, request, NULL);
+		i_free(request);
 		return;
 	}
 
--- a/src/auth/passdb-ldap.c	Sun Dec 19 07:11:05 2004 +0200
+++ b/src/auth/passdb-ldap.c	Sun Dec 19 07:30:20 2004 +0200
@@ -121,7 +121,6 @@
 			password, scheme,
 			ldap_request->callback.lookup_credentials,
 			auth_request);
-		i_free(request);
 		return;
 	}
 
@@ -129,7 +128,6 @@
 	if (password == NULL) {
 		ldap_request->callback.verify_plain(PASSDB_RESULT_USER_UNKNOWN,
 						    auth_request);
-		i_free(request);
 		return;
 	}
 
@@ -147,7 +145,6 @@
 	ldap_request->callback.verify_plain(ret > 0 ? PASSDB_RESULT_OK :
 					    PASSDB_RESULT_PASSWORD_MISMATCH,
 					    auth_request);
-	i_free(request);
 }
 
 static void ldap_lookup_pass(struct auth_request *auth_request,
--- a/src/auth/userdb-ldap.c	Sun Dec 19 07:11:05 2004 +0200
+++ b/src/auth/userdb-ldap.c	Sun Dec 19 07:30:20 2004 +0200
@@ -99,7 +99,6 @@
 		i_error("LDAP: ldap_search() failed: %s",
 			ldap_err2string(ret));
 		urequest->userdb_callback(NULL, request->context);
-		i_free(urequest);
 		return;
 	}
 
@@ -108,7 +107,6 @@
 		if (res != NULL)
 			i_error("LDAP: Authenticated user not found");
 		urequest->userdb_callback(NULL, request->context);
-		i_free(urequest);
 		return;
 	}
 
@@ -142,14 +140,12 @@
 			user.virtual_user);
 	} else {
 		urequest->userdb_callback(&user, request->context);
-		i_free(urequest);
 		t_pop();
 		return;
 	}
 
 	/* error */
 	urequest->userdb_callback(NULL, request->context);
-	i_free(urequest);
 	t_pop();
 }