dovecot-2.2-pigeonhole: lib-sieve: storage: Check Sieve script n...

pigeonhole at rename-it.nl pigeonhole at rename-it.nl
Thu May 7 19:49:43 UTC 2015


details:   http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/eb001d7bbabf
changeset: 2047:eb001d7bbabf
user:      Stephan Bosch <stephan at rename-it.nl>
date:      Thu May 07 21:41:24 2015 +0200
description:
lib-sieve: storage: Check Sieve script name validity in configuration.

diffstat:

 src/lib-sieve/sieve-storage.c |  20 +++++++++++++++++---
 1 files changed, 17 insertions(+), 3 deletions(-)

diffs (42 lines):

diff -r eeef7010b52e -r eb001d7bbabf src/lib-sieve/sieve-storage.c
--- a/src/lib-sieve/sieve-storage.c	Thu May 07 21:17:40 2015 +0200
+++ b/src/lib-sieve/sieve-storage.c	Thu May 07 21:41:24 2015 +0200
@@ -196,8 +196,16 @@
 					return -1;
 				}
 
-				if ( storage->script_name == NULL )
+				if ( storage->script_name == NULL ) {
+					if ( !sieve_script_name_is_valid(option+5) ) {
+						sieve_storage_sys_error(storage,
+							"Failed to parse storage location: "
+							"Invalid script name `%s'.",
+							str_sanitize(option+5, 80));
+						return -1;
+					}
 					storage->script_name = p_strdup(storage->pool, option+5);
+				}
 
 			} else if ( strncasecmp(option, "bindir=", 7) == 0 ) {
 				const char *bin_dir = option+7;
@@ -486,12 +494,18 @@
 		set_default =
 			 sieve_setting_get(svinst, "sieve_global_path");
 	}
-	set_default_name =
-		 sieve_setting_get(svinst, "sieve_default_name");
 
 	/* Attempt to locate user's main storage */
 	storage = sieve_storage_do_create_main(svinst, user, flags, error_r);
 
+	set_default_name =
+		 sieve_setting_get(svinst, "sieve_default_name");
+	if ( !sieve_script_name_is_valid(set_default_name) ) {
+		sieve_storage_sys_error(storage,
+			"Invalid script name `%s' for `sieve_default_name' setting.",
+			str_sanitize(set_default_name, 80));
+		set_default_name = NULL;
+	}
 	storage->default_name =
 		p_strdup_empty(storage->pool, set_default_name);
 


More information about the dovecot-cvs mailing list