From e4b1db2e7005816b5fff823e4858d97207d5aefb Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Tue, 25 Mar 2014 17:27:06 +0100
Subject: [PATCH] Fixed missing escape of " in sieve rules

---
 .../lib/plugins/mail_user_filter_plugin.inc.php   | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/interface/lib/plugins/mail_user_filter_plugin.inc.php b/interface/lib/plugins/mail_user_filter_plugin.inc.php
index df939d376d..774da83994 100644
--- a/interface/lib/plugins/mail_user_filter_plugin.inc.php
+++ b/interface/lib/plugins/mail_user_filter_plugin.inc.php
@@ -141,13 +141,22 @@ class mail_user_filter_plugin {
 			$content .= 'if header :regex    ["'.strtolower($page_form->dataRecord["source"]).'"] ["';
 
 			$searchterm = preg_quote($page_form->dataRecord["searchterm"]);
-			$searchterm = str_replace('\\[', '\\\\[', $searchterm);
-			$searchterm = str_replace('\\]', '\\\\]', $searchterm);
+			$searchterm = str_replace(
+				array(
+					'"',
+					'\\[',
+					'\\]'
+				),
+				array(
+					'\\"',
+					'\\\\[',
+					'\\\\]'
+				), $searchterm);
 
 			if($page_form->dataRecord["op"] == 'contains') {
 				$content .= ".*".$searchterm;
 			} elseif ($page_form->dataRecord["op"] == 'is') {
-				$content .= $searchterm."$";
+				$content .= "^".$searchterm."$";
 			} elseif ($page_form->dataRecord["op"] == 'begins') {
 				$content .= " ".$searchterm."";
 			} elseif ($page_form->dataRecord["op"] == 'ends') {
-- 
GitLab