From a1c1ca7815c2fa7d9424df53806001a7a76b9948 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@open-xchange.com>
Date: Thu, 18 Jun 2020 00:28:02 +0200
Subject: [PATCH] lib-sieve: plugins: editheader: Fix infinite loop occurring
 when header setting is invalid.

---
 .../editheader/ext-editheader-common.c        |  1 +
 tests/extensions/editheader/protected.svtest  | 25 ++++++++++++++++++-
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/src/lib-sieve/plugins/editheader/ext-editheader-common.c b/src/lib-sieve/plugins/editheader/ext-editheader-common.c
index 50983c78a..89fb180b3 100644
--- a/src/lib-sieve/plugins/editheader/ext-editheader-common.c
+++ b/src/lib-sieve/plugins/editheader/ext-editheader-common.c
@@ -70,6 +70,7 @@ ext_editheader_config_headers(struct sieve_instance *svinst,
 					  "setting %s contains invalid header field name "
 					  "`%s' (ignored)",
 					  setting, *headers);
+				headers++;
 				continue;
 			}
 
diff --git a/tests/extensions/editheader/protected.svtest b/tests/extensions/editheader/protected.svtest
index 398fc9cb1..148a9c8f3 100644
--- a/tests/extensions/editheader/protected.svtest
+++ b/tests/extensions/editheader/protected.svtest
@@ -1,7 +1,7 @@
 require "vnd.dovecot.testsuite";
 
 require "variables";
-
+require "encoded-character";
 require "editheader";
 
 set "message" text:
@@ -148,3 +148,26 @@ id 3jhl22khhf23f; Mon, 24 Aug 2015 04:11:54 -0600;
 		test_fail "autosubmitted header was not added";
 	}
 }
+
+/*
+ * TEST - Bad header configuration
+ */
+
+test_config_set "sieve_editheader_protected" "${unicode:1F4A9} delivery-date";
+test_config_reload :extension "editheader";
+
+test_set "message" "${message}";
+test "Bad header configuration" {
+	if not exists "delivery-date" {
+		test_fail "delivery-date header did not exist in the first place";
+	}
+
+	deleteheader "delivery-date";
+
+	if not exists "delivery-date" {
+		test_fail "protected delivery-date header was deleted";
+	}
+}
+
+test_config_set "sieve_editheader_protected" "";
+test_config_reload :extension "editheader";
-- 
GitLab