dovecot: Don't crash if ldap userdb lookup fails.

dovecot at dovecot.org dovecot at dovecot.org
Tue Feb 26 15:09:18 EET 2008


details:   http://hg.dovecot.org/dovecot/rev/2e3f6188e164
changeset: 7288:2e3f6188e164
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Feb 26 15:11:37 2008 +0200
description:
Don't crash if ldap userdb lookup fails.

diffstat:

2 files changed, 5 insertions(+), 3 deletions(-)
src/auth/db-ldap.c     |    2 ++
src/auth/userdb-ldap.c |    6 +++---

diffs (49 lines):

diff -r 8a3a06fc5d10 -r 2e3f6188e164 src/auth/db-ldap.c
--- a/src/auth/db-ldap.c	Mon Feb 25 21:47:20 2008 +0200
+++ b/src/auth/db-ldap.c	Tue Feb 26 15:11:37 2008 +0200
@@ -378,6 +378,8 @@ void db_ldap_request(struct ldap_connect
 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;
 
diff -r 8a3a06fc5d10 -r 2e3f6188e164 src/auth/userdb-ldap.c
--- a/src/auth/userdb-ldap.c	Mon Feb 25 21:47:20 2008 +0200
+++ b/src/auth/userdb-ldap.c	Tue Feb 26 15:11:37 2008 +0200
@@ -22,7 +22,6 @@ struct ldap_userdb_module {
 
 struct userdb_ldap_request {
 	struct ldap_request_search request;
-        struct auth_request *auth_request;
         userdb_callback_t *userdb_callback;
 };
 
@@ -49,7 +48,8 @@ static void userdb_ldap_lookup_callback(
 {
 	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 @@ static void userdb_ldap_lookup(struct au
 
 	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 @@ static void userdb_ldap_lookup(struct au
 			       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);
 }


More information about the dovecot-cvs mailing list