From 05b11f7ef0dd100110ee728770e3fa157b994ed0 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Thu, 12 Mar 2015 06:31:22 -0400 Subject: Fix handling of header test with one-element array as header name --- .../lib/Roundcube/rcube_sieve_engine.php | 28 ++++++++++++---------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php') diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php index 98c4c952c..2f2791d30 100644 --- a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php +++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php @@ -63,7 +63,7 @@ class rcube_sieve_engine 1 => 'notifyimportancehigh' ); - const VERSION = '8.2'; + const VERSION = '8.3'; const PROGNAME = 'Roundcube (Managesieve)'; const PORT = 4190; @@ -1394,19 +1394,21 @@ class rcube_sieve_engine } if (isset($rule['test'])) { - if (in_array($rule['test'], array('header', 'address', 'envelope')) - && !is_array($rule['arg1']) - && ($header = strtolower($rule['arg1'])) - && isset($this->headers[$header]) - ) { - $test = $header; + if (in_array($rule['test'], array('header', 'address', 'envelope'))) { + if (is_array($rule['arg1']) && count($rule['arg1']) == 1) { + $rule['arg1'] = $rule['arg1'][0]; + } + + $matches = ($header = strtolower($rule['arg1'])) && isset($this->headers[$header]); + $test = $matches ? $header : '...'; } - else if ($rule['test'] == 'exists' - && !is_array($rule['arg']) - && ($header = strtolower($rule['arg'])) - && isset($this->headers[$header]) - ) { - $test = $header; + else if ($rule['test'] == 'exists') { + if (is_array($rule['arg']) && count($rule['arg']) == 1) { + $rule['arg'] = $rule['arg'][0]; + } + + $matches = ($header = strtolower($rule['arg'])) && isset($this->headers[$header]); + $test = $matches ? $header : '...'; } else if (in_array($rule['test'], array('size', 'body', 'date', 'currentdate'))) { $test = $rule['test']; -- cgit v1.2.3