dovecot-1.2-sieve: Envelope paths with only a mailbox part are n...
pigeonhole at rename-it.nl
pigeonhole at rename-it.nl
Tue Jan 19 11:12:06 EET 2010
details: http://hg.rename-it.nl/dovecot-1.2-sieve/rev/31ad262eb152
changeset: 1215:31ad262eb152
user: Stephan Bosch <stephan at rename-it.nl>
date: Tue Jan 19 10:11:42 2010 +0100
description:
Envelope paths with only a mailbox part are now allowed.
diffstat:
src/lib-sieve/sieve-address-parts.c | 8 ++++++++
src/lib-sieve/sieve-address.c | 10 +++++-----
tests/extensions/envelope.svtest | 35 +++++++++++++++++++++++++++++++----
3 files changed, 44 insertions(+), 9 deletions(-)
diffs (98 lines):
diff -r e6cda4fec96b -r 31ad262eb152 src/lib-sieve/sieve-address-parts.c
--- a/src/lib-sieve/sieve-address-parts.c Mon Jan 18 01:35:16 2010 +0100
+++ b/src/lib-sieve/sieve-address-parts.c Tue Jan 19 10:11:42 2010 +0100
@@ -371,6 +371,14 @@
const char *local_part = address->local_part;
const char *domain = address->domain;
+ if ( domain == NULL ) {
+ return local_part;
+ }
+
+ if ( local_part == NULL ) {
+ return NULL;
+ }
+
return t_strconcat(local_part, "@", domain, NULL);
}
diff -r e6cda4fec96b -r 31ad262eb152 src/lib-sieve/sieve-address.c
--- a/src/lib-sieve/sieve-address.c Mon Jan 18 01:35:16 2010 +0100
+++ b/src/lib-sieve/sieve-address.c Tue Jan 19 10:11:42 2010 +0100
@@ -692,14 +692,14 @@
/* Mailbox = Local-part "@" Domain */
- if ( (ret=path_parse_local_part(parser)) <= 0 )
+ if ( (ret=path_parse_local_part(parser)) < 0
+ || (ret=path_skip_white_space(parser)) < 0 )
return -1;
- if ( (ret=path_skip_white_space(parser)) <= 0 )
- return -1;
+ if ( ret == 0 || *parser->data != '@' ) {
+ return ret;
+ }
- if ( *parser->data != '@' )
- return -1;
parser->data++;
if ( (ret=path_skip_white_space(parser)) <= 0 )
diff -r e6cda4fec96b -r 31ad262eb152 tests/extensions/envelope.svtest
--- a/tests/extensions/envelope.svtest Mon Jan 18 01:35:16 2010 +0100
+++ b/tests/extensions/envelope.svtest Tue Jan 19 10:11:42 2010 +0100
@@ -67,10 +67,10 @@
test "Envelope - invalid paths" {
/* Return_path: "hutsefluts" */
- test_set "envelope.from" "hutsefluts";
- test_set "envelope.to" "knurft";
+ test_set "envelope.from" "hutsefluts@";
+ test_set "envelope.to" "knurft@";
- if not envelope :all :is "from" "hutsefluts" {
+ if not envelope :all :is "from" "hutsefluts@" {
test_fail ":all address part mangled syntactically incorrect reverse path";
}
@@ -82,7 +82,7 @@
test_fail ":domain address part matched syntactically incorrect reverse path";
}
- if not envelope :all :is "to" "knurft" {
+ if not envelope :all :is "to" "knurft@" {
test_fail ":all address part mangled syntactically incorrect forward path";
}
@@ -216,3 +216,30 @@
test_fail ":all address part mangled syntactically incorrect path";
}
}
+
+test "Envelope - local part only" {
+ test_set "envelope.to" "<MAILER-DAEMON>";
+ if not envelope :is "to" "MAILER-DAEMON" {
+ test_fail "failed to parse local_part only path";
+ }
+
+ test_set "envelope.to" "MAILER-DAEMON@";
+ if envelope :is "to" "MAILER-DAEMON" {
+ test_fail "parsing syntactically incorrect path with missing domain";
+ }
+
+ test_set "envelope.to" "<MAILER-DAEMON>";
+ if not envelope :is "to" "MAILER-DAEMON" {
+ test_fail "failed to parse local_part only path with angle brackets";
+ }
+
+ test_set "envelope.to" "<MAILER-DAEMON >";
+ if not envelope :is "to" "MAILER-DAEMON" {
+ test_fail "failed to parse local_part only path with angle brackets and whitespace";
+ }
+
+ test_set "envelope.to" " MAILER-DAEMON ";
+ if not envelope :is "to" "MAILER-DAEMON" {
+ test_fail "failed to parse local_part only path with whitespace";
+ }
+}
More information about the dovecot-cvs
mailing list