changeset 3272:36db3285f4a7 HEAD

Try to keep scheme always included in auth_request->passdb_password.
author Timo Sirainen <tss@iki.fi>
date Fri, 08 Apr 2005 02:42:46 +0300
parents 55bc96b23bc1
children 9860bab7b7e3
files src/auth/auth-request.c src/auth/auth-request.h src/auth/passdb-cache.c src/auth/passdb-ldap.c src/auth/passdb-sql.c
diffstat 5 files changed, 24 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/auth-request.c	Fri Apr 08 02:29:22 2005 +0300
+++ b/src/auth/auth-request.c	Fri Apr 08 02:42:46 2005 +0300
@@ -403,21 +403,28 @@
 }
 
 void auth_request_set_field(struct auth_request *request,
-			    const char *name, const char *value)
+			    const char *name, const char *value,
+			    const char *default_scheme)
 {
 	string_t *str;
 
 	i_assert(value != NULL);
 
 	if (strcmp(name, "password") == 0) {
-		if (request->passdb_password == NULL) {
+		if (request->passdb_password != NULL) {
+			auth_request_log_error(request, "auth",
+				"Multiple password values not supported");
+			return;
+		}
+
+		if (*value == '{') {
 			request->passdb_password =
 				p_strdup(request->pool, value);
 		} else {
-			auth_request_log_error(request, "auth",
-				"Multiple password values not supported");
+			request->passdb_password =
+				p_strdup_printf(request->pool, "{%s}%s",
+						default_scheme, value);
 		}
-		return;
 	}
 
 	if (strcmp(name, "user") == 0) {
--- a/src/auth/auth-request.h	Fri Apr 08 02:29:22 2005 +0300
+++ b/src/auth/auth-request.h	Fri Apr 08 02:42:46 2005 +0300
@@ -91,7 +91,8 @@
 			      const char *username, const char **error_r);
 
 void auth_request_set_field(struct auth_request *request,
-			    const char *name, const char *value);
+			    const char *name, const char *value,
+			    const char *default_scheme);
 
 const struct var_expand_table *
 auth_request_get_var_expand_table(const struct auth_request *auth_request,
--- a/src/auth/passdb-cache.c	Fri Apr 08 02:29:22 2005 +0300
+++ b/src/auth/passdb-cache.c	Fri Apr 08 02:42:46 2005 +0300
@@ -27,7 +27,8 @@
 			value++;
 		}
 
-		auth_request_set_field(request, name, value);
+		i_assert(*value == '{');
+		auth_request_set_field(request, name, value, NULL);
 		t_pop();
 	}
 }
--- a/src/auth/passdb-ldap.c	Fri Apr 08 02:29:22 2005 +0300
+++ b/src/auth/passdb-ldap.c	Fri Apr 08 02:42:46 2005 +0300
@@ -55,7 +55,8 @@
 		if (name != NULL && vals != NULL) {
 			for (i = 0; vals[i] != NULL; i++) {
 				auth_request_set_field(auth_request,
-						       name, vals[i]);
+						name, vals[i],
+						conn->set.default_pass_scheme);
 			}
 		}
 
@@ -118,10 +119,7 @@
 		return;
 
 	scheme = password_get_scheme(&password);
-	if (scheme == NULL) {
-		scheme = conn->set.default_pass_scheme;
-		i_assert(scheme != NULL);
-	}
+	i_assert(scheme != NULL); /* auth_request_set_field() sets it */
 
 	if (ldap_request->credentials != -1) {
 		passdb_handle_credentials(passdb_result,
--- a/src/auth/passdb-sql.c	Fri Apr 08 02:29:22 2005 +0300
+++ b/src/auth/passdb-sql.c	Fri Apr 08 02:42:46 2005 +0300
@@ -43,8 +43,10 @@
 		name = sql_result_get_field_name(result, i);
 		value = sql_result_get_field_value(result, i);
 
-		if (value != NULL)
-			auth_request_set_field(auth_request, name, value);
+		if (value != NULL) {
+			auth_request_set_field(auth_request, name, value,
+				passdb_sql_conn->set.default_pass_scheme);
+		}
 	}
 }
 
@@ -85,10 +87,7 @@
 	}
 
 	scheme = password_get_scheme(&password);
-	if (scheme == NULL) {
-		scheme = passdb_sql_conn->set.default_pass_scheme;
-		i_assert(scheme != NULL);
-	}
+	i_assert(scheme != NULL); /* auth_request_set_field() sets it */
 
 	if (sql_request->credentials != -1) {
 		passdb_handle_credentials(passdb_result,