dovecot-2.2: auth: With multiple passdbs the previous passdb's u...

dovecot at dovecot.org dovecot at dovecot.org
Fri Jul 12 03:01:44 EEST 2013


details:   http://hg.dovecot.org/dovecot-2.2/rev/3e6b136d936c
changeset: 16613:3e6b136d936c
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Jul 12 03:01:31 2013 +0300
description:
auth: With multiple passdbs the previous passdb's userdb_* fields weren't cleared.

diffstat:

 src/auth/auth-request.c |  10 ++++++++++
 src/auth/auth-request.h |   1 +
 2 files changed, 11 insertions(+), 0 deletions(-)

diffs (35 lines):

diff -r 2be295a0b64f -r 3e6b136d936c src/auth/auth-request.c
--- a/src/auth/auth-request.c	Fri Jul 12 02:43:43 2013 +0300
+++ b/src/auth/auth-request.c	Fri Jul 12 03:01:31 2013 +0300
@@ -605,10 +605,20 @@
 			/* this passdb lookup succeeded, preserve its extra
 			   fields */
 			auth_fields_snapshot(request->extra_fields);
+			request->snapshot_has_userdb_reply =
+				request->userdb_reply != NULL;
+			if (request->userdb_reply != NULL)
+				auth_fields_snapshot(request->userdb_reply);
 		} else {
 			/* this passdb lookup failed, remove any extra fields
 			   it set */
 			auth_fields_rollback(request->extra_fields);
+			if (request->userdb_reply == NULL)
+				;
+			else if (!request->snapshot_has_userdb_reply)
+				request->userdb_reply = NULL;
+			else
+				auth_fields_rollback(request->userdb_reply);
 		}
 
 		if (*result == PASSDB_RESULT_USER_UNKNOWN) {
diff -r 2be295a0b64f -r 3e6b136d936c src/auth/auth-request.h
--- a/src/auth/auth-request.h	Fri Jul 12 02:43:43 2013 +0300
+++ b/src/auth/auth-request.h	Fri Jul 12 03:01:31 2013 +0300
@@ -123,6 +123,7 @@
 	unsigned int prefer_plain_credentials:1;
 	unsigned int in_delayed_failure_queue:1;
 	unsigned int removed_from_handler:1;
+	unsigned int snapshot_has_userdb_reply:1;
 	/* each passdb lookup can update the current success-status using the
 	   result_* rules. the authentication succeeds only if this is TRUE
 	   at the end. mechanisms that don't require passdb, but do a passdb


More information about the dovecot-cvs mailing list