From: Stephan Bosch Date: Wed, 27 Jul 2022 21:09:24 +0000 (+0200) Subject: auth: auth-request - Snapshot the userdb fields upon authentication success. X-Git-Tag: 2.4.0~2973 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e518952be45012d54530d1fb58e95ad9950dd93c;p=thirdparty%2Fdovecot%2Fcore.git auth: auth-request - Snapshot the userdb fields upon authentication success. Otherwise, fields added by mechanisms that don't use a passdb lookup (such as DOVECOT-TOKEN) can be lost upon the subsequent userdb lookup. --- diff --git a/src/auth/auth-request.c b/src/auth/auth-request.c index 6d732656cb..c57d133f19 100644 --- a/src/auth/auth-request.c +++ b/src/auth/auth-request.c @@ -180,6 +180,10 @@ void auth_request_success(struct auth_request *request, { i_assert(request->state == AUTH_REQUEST_STATE_MECH_CONTINUE); + /* preserve userdb fields set by mechanisms that don't use a passdb */ + if (request->fields.userdb_reply != NULL) + auth_fields_snapshot(request->fields.userdb_reply); + if (!request->set->policy_check_after_auth) { struct auth_policy_check_ctx *ctx = p_new(request->pool, struct auth_policy_check_ctx, 1);