From: Timo Sirainen Date: Sat, 31 Jan 2009 18:15:12 +0000 (+0200) Subject: auth: Using "username" or "domain" passdb fields caused problems with cache and block... X-Git-Tag: 1.2.beta1~47 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=21a8eb0c8f1f377e189545e3a78726271c6b4505;p=thirdparty%2Fdovecot%2Fcore.git auth: Using "username" or "domain" passdb fields caused problems with cache and blocking passdbs. --HG-- branch : HEAD --- diff --git a/src/auth/auth-request.c b/src/auth/auth-request.c index 758e6233cc..f506e113d5 100644 --- a/src/auth/auth-request.c +++ b/src/auth/auth-request.c @@ -981,7 +981,7 @@ void auth_request_set_field(struct auth_request *request, const char *name, const char *value, const char *default_scheme) { - const char *p; + const char *p, *orig_value; i_assert(*name != '\0'); i_assert(value != NULL); @@ -999,6 +999,7 @@ void auth_request_set_field(struct auth_request *request, if (strcmp(name, "user") == 0 || strcmp(name, "username") == 0 || strcmp(name, "domain") == 0) { /* update username */ + orig_value = value; if (strcmp(name, "username") == 0 && strchr(value, '@') == NULL && (p = strchr(request->user, '@')) != NULL) { @@ -1023,6 +1024,9 @@ void auth_request_set_field(struct auth_request *request, request->user, value); request->user = p_strdup(request->pool, value); } + /* restore the original value so it gets saved correctly to + cache. */ + value = orig_value; } else if (strcmp(name, "nodelay") == 0) { /* don't delay replying to client of the failure */ request->no_failure_delay = TRUE;