dovecot-2.2-pigeonhole: lib-sieve: Erroneously decoded mime-enco...
pigeonhole at rename-it.nl
pigeonhole at rename-it.nl
Tue May 5 11:44:33 UTC 2015
details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/a3d26f12c2cd
changeset: 2043:a3d26f12c2cd
user: Stephan Bosch <stephan at rename-it.nl>
date: Tue May 05 13:42:38 2015 +0200
description:
lib-sieve: Erroneously decoded mime-encoded words in address headers.
diffstat:
src/lib-sieve/plugins/date/tst-date.c | 2 +-
src/lib-sieve/plugins/index/tag-index.c | 3 ++-
src/lib-sieve/sieve-message.c | 9 +++++----
src/lib-sieve/sieve-message.h | 4 ++--
src/lib-sieve/tst-address.c | 2 +-
src/lib-sieve/tst-exists.c | 2 +-
src/lib-sieve/tst-header.c | 2 +-
tests/test-address.svtest | 25 +++++++++++++++++++++++++
8 files changed, 38 insertions(+), 11 deletions(-)
diffs (164 lines):
diff -r 89e0cef5b264 -r a3d26f12c2cd src/lib-sieve/plugins/date/tst-date.c
--- a/src/lib-sieve/plugins/date/tst-date.c Tue May 05 10:41:45 2015 +0200
+++ b/src/lib-sieve/plugins/date/tst-date.c Tue May 05 13:42:38 2015 +0200
@@ -471,7 +471,7 @@
/* Get header */
sieve_runtime_trace_descend(renv);
if ( (ret=sieve_message_get_header_fields
- (renv, hdr_list, &svmos, &hdr_value_list)) <= 0 )
+ (renv, hdr_list, &svmos, FALSE, &hdr_value_list)) <= 0 )
return ret;
sieve_runtime_trace_ascend(renv);
diff -r 89e0cef5b264 -r a3d26f12c2cd src/lib-sieve/plugins/index/tag-index.c
--- a/src/lib-sieve/plugins/index/tag-index.c Tue May 05 10:41:45 2015 +0200
+++ b/src/lib-sieve/plugins/index/tag-index.c Tue May 05 13:42:38 2015 +0200
@@ -63,7 +63,7 @@
static int svmo_index_header_override
(const struct sieve_message_override *svmo,
const struct sieve_runtime_env *renv,
- struct sieve_stringlist **headers);
+ bool mime_decode, struct sieve_stringlist **headers);
const struct sieve_message_override_def index_header_override = {
SIEVE_OBJECT("index", &index_operand, 0),
@@ -256,6 +256,7 @@
static int svmo_index_header_override
(const struct sieve_message_override *svmo,
const struct sieve_runtime_env *renv,
+ bool mime_decode ATTR_UNUSED,
struct sieve_stringlist **headers)
{
struct svmo_index_context *ctx =
diff -r 89e0cef5b264 -r a3d26f12c2cd src/lib-sieve/sieve-message.c
--- a/src/lib-sieve/sieve-message.c Tue May 05 10:41:45 2015 +0200
+++ b/src/lib-sieve/sieve-message.c Tue May 05 13:42:38 2015 +0200
@@ -733,7 +733,7 @@
(const struct sieve_runtime_env *renv,
struct sieve_stringlist *field_names,
ARRAY_TYPE(sieve_message_override) *svmos,
- struct sieve_stringlist **fields_r)
+ bool mime_decode, struct sieve_stringlist **fields_r)
{
const struct sieve_message_override *svmo;
unsigned int count, i;
@@ -742,7 +742,7 @@
if ( svmos == NULL || !array_is_created(svmos) ||
array_count(svmos) == 0 ) {
*fields_r = sieve_message_header_stringlist_create
- (renv, field_names, TRUE);
+ (renv, field_names, mime_decode);
return SIEVE_EXEC_OK;
}
@@ -752,12 +752,13 @@
*fields_r = field_names;
} else {
*fields_r = sieve_message_header_stringlist_create
- (renv, field_names, TRUE);
+ (renv, field_names, mime_decode);
}
for ( i = 0; i < count; i++ ) {
if ( svmo[i].def->header_override != NULL &&
- (ret=svmo[i].def->header_override(&svmo[i], renv, fields_r)) <= 0 )
+ (ret=svmo[i].def->header_override
+ (&svmo[i], renv, mime_decode, fields_r)) <= 0 )
return ret;
}
return SIEVE_EXEC_OK;
diff -r 89e0cef5b264 -r a3d26f12c2cd src/lib-sieve/sieve-message.h
--- a/src/lib-sieve/sieve-message.h Tue May 05 10:41:45 2015 +0200
+++ b/src/lib-sieve/sieve-message.h Tue May 05 13:42:38 2015 +0200
@@ -102,7 +102,7 @@
int (*header_override)
(const struct sieve_message_override *svmo,
const struct sieve_runtime_env *renv,
- struct sieve_stringlist **headers);
+ bool mime_decode, struct sieve_stringlist **headers);
};
struct sieve_message_override {
@@ -164,6 +164,6 @@
(const struct sieve_runtime_env *renv,
struct sieve_stringlist *field_names,
ARRAY_TYPE(sieve_message_override) *svmos,
- struct sieve_stringlist **fields_r);
+ bool mime_decode, struct sieve_stringlist **fields_r);
#endif /* __SIEVE_MESSAGE_H */
diff -r 89e0cef5b264 -r a3d26f12c2cd src/lib-sieve/tst-address.c
--- a/src/lib-sieve/tst-address.c Tue May 05 10:41:45 2015 +0200
+++ b/src/lib-sieve/tst-address.c Tue May 05 13:42:38 2015 +0200
@@ -261,7 +261,7 @@
/* Get header */
sieve_runtime_trace_descend(renv);
if ( (ret=sieve_message_get_header_fields
- (renv, hdr_list, &svmos, &hdr_value_list)) <= 0 )
+ (renv, hdr_list, &svmos, FALSE, &hdr_value_list)) <= 0 )
return ret;
sieve_runtime_trace_ascend(renv);
diff -r 89e0cef5b264 -r a3d26f12c2cd src/lib-sieve/tst-exists.c
--- a/src/lib-sieve/tst-exists.c Tue May 05 10:41:45 2015 +0200
+++ b/src/lib-sieve/tst-exists.c Tue May 05 13:42:38 2015 +0200
@@ -151,7 +151,7 @@
/* Get header */
if ( (ret=sieve_message_get_header_fields
(renv, sieve_single_stringlist_create(renv, hdr_item, FALSE),
- &svmos, &value_list) <= 0) )
+ &svmos, FALSE, &value_list) <= 0) )
return ret;
if ( (ret=sieve_stringlist_next_item(value_list, &dummy)) < 0)
diff -r 89e0cef5b264 -r a3d26f12c2cd src/lib-sieve/tst-header.c
--- a/src/lib-sieve/tst-header.c Tue May 05 10:41:45 2015 +0200
+++ b/src/lib-sieve/tst-header.c Tue May 05 13:42:38 2015 +0200
@@ -191,7 +191,7 @@
/* Get header */
sieve_runtime_trace_descend(renv);
if ( (ret=sieve_message_get_header_fields
- (renv, hdr_list, &svmos, &value_list)) <= 0 )
+ (renv, hdr_list, &svmos, TRUE, &value_list)) <= 0 )
return ret;
sieve_runtime_trace_ascend(renv);
diff -r 89e0cef5b264 -r a3d26f12c2cd tests/test-address.svtest
--- a/tests/test-address.svtest Tue May 05 10:41:45 2015 +0200
+++ b/tests/test-address.svtest Tue May 05 13:42:38 2015 +0200
@@ -372,6 +372,30 @@
}
/*
+ * TEST: Mime encoding of '@' in display name
+ */
+
+test_set "message" text:
+From: "Frop <frop at example.org>"
+To: =?UTF-8?B?RnJpZXBAZnJvcA0K?=
+ <friep at example.com>
+Subject: Test
+
+Frop!
+.
+;
+
+
+test "Mime encoding of '@' in display name" {
+ # Relevant sieve rule:
+
+ if not address :is "To"
+ ["friep at example.com"] {
+ test_fail "Invalid address extracted";
+ }
+}
+
+/*
* TEST: Erroneous mime encoding
*/
@@ -394,3 +418,4 @@
}
}
+
More information about the dovecot-cvs
mailing list