dovecot-2.1: auth: If user is disabled or password expired, tell...

dovecot at dovecot.org dovecot at dovecot.org
Wed May 16 16:15:45 EEST 2012


details:   http://hg.dovecot.org/dovecot-2.1/rev/d6f06ce44b0b
changeset: 14529:d6f06ce44b0b
user:      Timo Sirainen <tss at iki.fi>
date:      Wed May 16 16:14:01 2012 +0300
description:
auth: If user is disabled or password expired, tell about it to auth-client.

diffstat:

 src/auth/auth-request-handler.c |  15 +++++++++++++++
 src/auth/auth-request.c         |   2 ++
 src/auth/auth-request.h         |   2 ++
 3 files changed, 19 insertions(+), 0 deletions(-)

diffs (56 lines):

diff -r 7dd1dd742825 -r d6f06ce44b0b src/auth/auth-request-handler.c
--- a/src/auth/auth-request-handler.c	Tue May 15 18:52:41 2012 +0300
+++ b/src/auth/auth-request-handler.c	Wed May 16 16:14:01 2012 +0300
@@ -287,6 +287,21 @@
 		auth_stream_reply_add(reply, "nodelay", NULL);
 	get_client_extra_fields(request, reply);
 
+	switch (request->passdb_result) {
+	case PASSDB_RESULT_INTERNAL_FAILURE:
+	case PASSDB_RESULT_SCHEME_NOT_AVAILABLE:
+	case PASSDB_RESULT_USER_UNKNOWN:
+	case PASSDB_RESULT_PASSWORD_MISMATCH:
+	case PASSDB_RESULT_OK:
+		break;
+	case PASSDB_RESULT_USER_DISABLED:
+		auth_stream_reply_add(reply, "user_disabled", NULL);
+		break;
+	case PASSDB_RESULT_PASS_EXPIRED:
+		auth_stream_reply_add(reply, "pass_expired", NULL);
+		break;
+	}
+
 	auth_request_handle_failure(request, reply);
 }
 
diff -r 7dd1dd742825 -r d6f06ce44b0b src/auth/auth-request.c
--- a/src/auth/auth-request.c	Tue May 15 18:52:41 2012 +0300
+++ b/src/auth/auth-request.c	Wed May 16 16:14:01 2012 +0300
@@ -557,6 +557,7 @@
 			request->private_callback.verify_plain);
 	} else {
 		auth_request_ref(request);
+		request->passdb_result = result;
 		request->private_callback.verify_plain(result, request);
 		auth_request_unref(&request);
 	}
@@ -691,6 +692,7 @@
 			   but the user was unknown there */
 			result = PASSDB_RESULT_USER_UNKNOWN;
 		}
+		request->passdb_result = result;
 		request->private_callback.
 			lookup_credentials(result, credentials, size, request);
 	}
diff -r 7dd1dd742825 -r d6f06ce44b0b src/auth/auth-request.h
--- a/src/auth/auth-request.h	Tue May 15 18:52:41 2012 +0300
+++ b/src/auth/auth-request.h	Wed May 16 16:14:01 2012 +0300
@@ -56,6 +56,8 @@
 	struct auth_stream_reply *extra_cache_fields;
 	/* the whole userdb result reply */
 	struct auth_stream_reply *userdb_reply;
+	/* Result of passdb lookup */
+	enum passdb_result passdb_result;
 
 	const struct mech_module *mech;
 	const struct auth_settings *set;


More information about the dovecot-cvs mailing list