changeset 7293:f78b83bf16b7 HEAD

Don't crash if ldap userdb lookup fails.
author Timo Sirainen <tss@iki.fi>
date Tue, 26 Feb 2008 15:11:34 +0200
parents d0520bb9177f
children 9e4c26471b19
files src/auth/db-ldap.c src/auth/userdb-ldap.c
diffstat 2 files changed, 5 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/db-ldap.c	Mon Feb 25 21:47:17 2008 +0200
+++ b/src/auth/db-ldap.c	Tue Feb 26 15:11:34 2008 +0200
@@ -378,6 +378,8 @@
 void db_ldap_request(struct ldap_connection *conn,
 		     struct ldap_request *request)
 {
+	i_assert(request->auth_request != NULL);
+
 	request->msgid = -1;
 	request->create_time = ioloop_time;
 
--- a/src/auth/userdb-ldap.c	Mon Feb 25 21:47:17 2008 +0200
+++ b/src/auth/userdb-ldap.c	Tue Feb 26 15:11:34 2008 +0200
@@ -22,7 +22,6 @@
 
 struct userdb_ldap_request {
 	struct ldap_request_search request;
-        struct auth_request *auth_request;
         userdb_callback_t *userdb_callback;
 };
 
@@ -49,7 +48,8 @@
 {
 	struct userdb_ldap_request *urequest =
 		(struct userdb_ldap_request *) request;
-	struct auth_request *auth_request = urequest->auth_request;
+	struct auth_request *auth_request =
+		urequest->request.request.auth_request;
 	LDAPMessage *entry;
 	enum userdb_result result = USERDB_RESULT_INTERNAL_FAILURE;
 
@@ -88,7 +88,6 @@
 
 	auth_request_ref(auth_request);
 	request = p_new(auth_request->pool, struct userdb_ldap_request, 1);
-	request->auth_request = auth_request;
 	request->userdb_callback = callback;
 
 	vars = auth_request_get_var_expand_table(auth_request, ldap_escape);
@@ -110,6 +109,7 @@
 			       attr_names == NULL ? "(all)" :
 			       t_strarray_join(attr_names, ","));
 
+	request->request.request.auth_request = auth_request;
 	request->request.request.callback = userdb_ldap_lookup_callback;
 	db_ldap_request(conn, &request->request.request);
 }