dovecot-2.0-pigeonhole: Envelope paths with only a mailbox part ...

pigeonhole at rename-it.nl pigeonhole at rename-it.nl
Tue Jan 19 21:12:21 EET 2010


details:   http://hg.rename-it.nl/dovecot-2.0-pigeonhole/rev/53f32fc7d9d8
changeset: 1211:53f32fc7d9d8
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 117ea52ea36f -r 53f32fc7d9d8 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 117ea52ea36f -r 53f32fc7d9d8 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 117ea52ea36f -r 53f32fc7d9d8 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