changeset 22215:05aff1909f97

auth: Don't lose all forward_ fields if the first passdb lookup fails.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Tue, 30 May 2017 16:57:45 +0300
parents 1b4a0735b158
children 415130854a53
files src/auth/auth-request.c
diffstat 1 files changed, 5 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/auth-request.c	Wed May 24 20:19:11 2017 +0200
+++ b/src/auth/auth-request.c	Tue May 30 16:57:45 2017 +0300
@@ -406,10 +406,13 @@
 		request->debug = TRUE;
 	else if (strcmp(key, "client_id") == 0)
 		request->client_id = p_strdup(request->pool, value);
-	else if (strcmp(key, "forward_fields") == 0)
+	else if (strcmp(key, "forward_fields") == 0) {
 		auth_fields_import_prefixed(request->extra_fields,
 					    "forward_", value, 0);
-	else
+		/* make sure the forward_ fields aren't deleted by
+		   auth_fields_rollback() if the first passdb lookup fails. */
+		auth_fields_snapshot(request->extra_fields);
+	} else
 		return FALSE;
 	/* NOTE: keep in sync with auth_request_export() */
 	return TRUE;