dovecot-1.2: auth: Improved logging for "password scheme not ava...

dovecot at dovecot.org dovecot at dovecot.org
Sat Feb 21 22:02:59 EET 2009


details:   http://hg.dovecot.org/dovecot-1.2/rev/90e2a21a4298
changeset: 8764:90e2a21a4298
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Feb 21 14:51:32 2009 -0500
description:
auth: Improved logging for "password scheme not available" failures.

diffstat:

3 files changed, 19 insertions(+), 21 deletions(-)
src/auth/auth-request.c |   26 +++++++++++---------------
src/auth/passdb-cache.c |    3 ---
src/auth/passdb.c       |   11 ++++++++---

diffs (92 lines):

diff -r 992cfb5ebdb0 -r 90e2a21a4298 src/auth/auth-request.c
--- a/src/auth/auth-request.c	Sat Feb 21 14:38:51 2009 -0500
+++ b/src/auth/auth-request.c	Sat Feb 21 14:51:32 2009 -0500
@@ -556,12 +556,11 @@ void auth_request_lookup_credentials_cal
 						    &result, TRUE)) {
 			auth_request_log_info(request, "passdb",
 				"Fallbacking to expired data from cache");
-		}
-		if (result == PASSDB_RESULT_OK) {
-			if (!passdb_get_credentials(request, cache_cred,
-						    cache_scheme,
-						    &credentials, &size))
-				result = PASSDB_RESULT_SCHEME_NOT_AVAILABLE;
+			passdb_handle_credentials(
+				result, cache_cred, cache_scheme,
+				auth_request_lookup_credentials_finish,
+				request);
+			return;
 		}
 	}
 
@@ -575,8 +574,6 @@ void auth_request_lookup_credentials(str
 {
 	struct passdb_module *passdb = request->passdb->passdb;
 	const char *cache_key, *cache_cred, *cache_scheme;
-	const unsigned char *credentials;
-	size_t size;
 	enum passdb_result result;
 
 	i_assert(request->state == AUTH_REQUEST_STATE_MECH_CONTINUE);
@@ -589,13 +586,10 @@ void auth_request_lookup_credentials(str
 		if (passdb_cache_lookup_credentials(request, cache_key,
 						    &cache_cred, &cache_scheme,
 						    &result, FALSE)) {
-			if (result == PASSDB_RESULT_OK &&
-			    !passdb_get_credentials(request, cache_cred,
-						    cache_scheme,
-						    &credentials, &size))
-				result = PASSDB_RESULT_SCHEME_NOT_AVAILABLE;
-			auth_request_lookup_credentials_finish(
-				result, credentials, size, request);
+			passdb_handle_credentials(
+				result, cache_cred, cache_scheme,
+				auth_request_lookup_credentials_finish,
+				request);
 			return;
 		}
 	}
@@ -604,6 +598,8 @@ void auth_request_lookup_credentials(str
 
 	if (passdb->iface.lookup_credentials == NULL) {
 		/* this passdb doesn't support credentials */
+		auth_request_log_debug(request, "password",
+			"passdb doesn't support credential lookups");
 		auth_request_lookup_credentials_callback(
 			PASSDB_RESULT_SCHEME_NOT_AVAILABLE, NULL, 0, request);
 	} else if (passdb->blocking) {
diff -r 992cfb5ebdb0 -r 90e2a21a4298 src/auth/passdb-cache.c
--- a/src/auth/passdb-cache.c	Sat Feb 21 14:38:51 2009 -0500
+++ b/src/auth/passdb-cache.c	Sat Feb 21 14:51:32 2009 -0500
@@ -119,9 +119,6 @@ bool passdb_cache_lookup_credentials(str
 	*password_r = *list[0] == '\0' ? NULL : list[0];
 	*scheme_r = password_get_scheme(password_r);
 	i_assert(*scheme_r != NULL || *password_r == NULL);
-
-	if (*password_r == NULL)
-		*result_r = PASSDB_RESULT_SCHEME_NOT_AVAILABLE;
 	return TRUE;
 }
 
diff -r 992cfb5ebdb0 -r 90e2a21a4298 src/auth/passdb.c
--- a/src/auth/passdb.c	Sat Feb 21 14:38:51 2009 -0500
+++ b/src/auth/passdb.c	Sat Feb 21 14:51:32 2009 -0500
@@ -123,10 +123,15 @@ void passdb_handle_credentials(enum pass
 		return;
 	}
 
-	if (password == NULL ||
-	    !passdb_get_credentials(auth_request, password, scheme,
-				    &credentials, &size))
+	if (password == NULL) {
+		auth_request_log_info(auth_request, "password",
+			"Requested %s scheme, but we have a NULL password",
+			auth_request->credentials_scheme);
 		result = PASSDB_RESULT_SCHEME_NOT_AVAILABLE;
+	} else if (!passdb_get_credentials(auth_request, password, scheme,
+					   &credentials, &size)) {
+		result = PASSDB_RESULT_SCHEME_NOT_AVAILABLE;
+	}
 
 	callback(result, credentials, size, auth_request);
 }


More information about the dovecot-cvs mailing list