dovecot: Added "password_noscheme" field which assumes the passw...
dovecot at dovecot.org
dovecot at dovecot.org
Sun Nov 25 03:15:11 EET 2007
details: http://hg.dovecot.org/dovecot/rev/5c514ebda66a
changeset: 6855:5c514ebda66a
user: Timo Sirainen <tss at iki.fi>
date: Sun Nov 25 03:15:07 2007 +0200
description:
Added "password_noscheme" field which assumes the password is in the default
scheme even if it begins with '{'.
diffstat:
1 file changed, 31 insertions(+), 20 deletions(-)
src/auth/auth-request.c | 51 ++++++++++++++++++++++++++++-------------------
diffs (68 lines):
diff -r 074ae6017b0a -r 5c514ebda66a src/auth/auth-request.c
--- a/src/auth/auth-request.c Sun Nov 25 03:09:20 2007 +0200
+++ b/src/auth/auth-request.c Sun Nov 25 03:15:07 2007 +0200
@@ -944,6 +944,31 @@ static void auth_request_validate_networ
request->passdb_failure = !found;
}
+static void
+auth_request_set_password(struct auth_request *request, const char *value,
+ const char *default_scheme, bool noscheme)
+{
+ if (request->passdb_password != NULL) {
+ auth_request_log_error(request,
+ request->passdb->passdb->iface.name,
+ "Multiple password values not supported");
+ return;
+ }
+
+ /* if the password starts with '{' it most likely contains
+ also '}'. check it anyway to make sure, because we
+ assert-crash later if it doesn't exist. this could happen
+ if plaintext passwords are used. */
+ if (*value == '{' && !noscheme && strchr(value, '}') != NULL)
+ request->passdb_password = p_strdup(request->pool, value);
+ else {
+ i_assert(default_scheme != NULL);
+ request->passdb_password =
+ p_strdup_printf(request->pool, "{%s}%s",
+ default_scheme, value);
+ }
+}
+
void auth_request_set_field(struct auth_request *request,
const char *name, const char *value,
const char *default_scheme)
@@ -954,26 +979,12 @@ void auth_request_set_field(struct auth_
i_assert(value != NULL);
if (strcmp(name, "password") == 0) {
- if (request->passdb_password != NULL) {
- auth_request_log_error(request,
- request->passdb->passdb->iface.name,
- "Multiple password values not supported");
- return;
- }
-
- /* if the password starts with '{' it most likely contains
- also '}'. check it anyway to make sure, because we
- assert-crash later if it doesn't exist. this could happen
- if plaintext passwords are used. */
- if (*value == '{' && strchr(value, '}') != NULL) {
- request->passdb_password =
- p_strdup(request->pool, value);
- } else {
- i_assert(default_scheme != NULL);
- request->passdb_password =
- p_strdup_printf(request->pool, "{%s}%s",
- default_scheme, value);
- }
+ auth_request_set_password(request, value,
+ default_scheme, FALSE);
+ return;
+ }
+ if (strcmp(name, "password_noscheme") == 0) {
+ auth_request_set_password(request, value, default_scheme, TRUE);
return;
}
More information about the dovecot-cvs
mailing list