dovecot-2.2-pigeonhole: sieve-tools: sievec and sieve-dump now i...

pigeonhole at rename-it.nl pigeonhole at rename-it.nl
Sun Sep 23 18:15:06 EEST 2012


details:   http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/cfe8e9f49dfe
changeset: 1672:cfe8e9f49dfe
user:      Stephan Bosch <stephan at rename-it.nl>
date:      Wed Aug 15 00:55:05 2012 +0200
description:
sieve-tools: sievec and sieve-dump now ignore mail_uid and mail_gid settings when run as root.
Before, sievec and sieve-dump would switch to mail_uid:mail_gid and then fail to compile/dump a root script.

diffstat:

 src/lib-sieve-tool/sieve-tool.c |  14 ++++++++++----
 src/lib-sieve-tool/sieve-tool.h |   2 +-
 src/sieve-tools/sieve-dump.c    |   2 +-
 src/sieve-tools/sieve-filter.c  |   2 +-
 src/sieve-tools/sieve-test.c    |   2 +-
 src/sieve-tools/sievec.c        |   2 +-
 src/testsuite/testsuite.c       |   2 +-
 7 files changed, 16 insertions(+), 10 deletions(-)

diffs (118 lines):

diff -r 7e100dcd888a -r cfe8e9f49dfe src/lib-sieve-tool/sieve-tool.c
--- a/src/lib-sieve-tool/sieve-tool.c	Sun Aug 12 15:50:27 2012 +0200
+++ b/src/lib-sieve-tool/sieve-tool.c	Wed Aug 15 00:55:05 2012 +0200
@@ -112,14 +112,14 @@
 		home == NULL || *home == '\0' ) {
 
 		if ((pw = getpwuid(process_euid)) != NULL) {
-            user = pw->pw_name;
+			user = pw->pw_name;
 			home = pw->pw_dir;
 		}
 	}
 
 	if ( username_r != NULL ) {
 		if ( user == NULL || *user == '\0' ) {
-            i_fatal("couldn't lookup our username (uid=%s)",
+			i_fatal("couldn't lookup our username (uid=%s)",
 				dec2str(process_euid));
 		}
 
@@ -216,7 +216,7 @@
 }
 
 struct sieve_instance *sieve_tool_init_finish
-(struct sieve_tool *tool, bool init_mailstore)
+(struct sieve_tool *tool, bool init_mailstore, bool preserve_root)
 {
 	enum mail_storage_service_flags storage_service_flags =
 		MAIL_STORAGE_SERVICE_FLAG_NO_CHDIR |
@@ -238,9 +238,15 @@
 		if ( tool->homedir != NULL )
 			i_free(tool->homedir);
 		tool->homedir = i_strdup(homedir);
-	} else
+
+		if ( preserve_root ) {
+			storage_service_flags |=
+				MAIL_STORAGE_SERVICE_FLAG_NO_RESTRICT_ACCESS;
+		}
+	} else {
 		storage_service_flags |=
 			MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP;
+	}
 
 	if ( !init_mailstore )
 		storage_service_flags |=
diff -r 7e100dcd888a -r cfe8e9f49dfe src/lib-sieve-tool/sieve-tool.h
--- a/src/lib-sieve-tool/sieve-tool.h	Sun Aug 12 15:50:27 2012 +0200
+++ b/src/lib-sieve-tool/sieve-tool.h	Wed Aug 15 00:55:05 2012 +0200
@@ -30,7 +30,7 @@
 int sieve_tool_getopt(struct sieve_tool *tool);
 
 struct sieve_instance *sieve_tool_init_finish
-	(struct sieve_tool *tool, bool init_mailstore);
+	(struct sieve_tool *tool, bool init_mailstore, bool preserve_root);
 
 void sieve_tool_deinit(struct sieve_tool **_tool);
 
diff -r 7e100dcd888a -r cfe8e9f49dfe src/sieve-tools/sieve-dump.c
--- a/src/sieve-tools/sieve-dump.c	Sun Aug 12 15:50:27 2012 +0200
+++ b/src/sieve-tools/sieve-dump.c	Wed Aug 15 00:55:05 2012 +0200
@@ -75,7 +75,7 @@
 	}
 
 	/* Finish tool initialization */
-	svinst = sieve_tool_init_finish(sieve_tool, FALSE);
+	svinst = sieve_tool_init_finish(sieve_tool, FALSE, TRUE);
 
         /* Enable debug extension */
         sieve_enable_debug_extension(svinst);
diff -r 7e100dcd888a -r cfe8e9f49dfe src/sieve-tools/sieve-filter.c
--- a/src/sieve-tools/sieve-filter.c	Sun Aug 12 15:50:27 2012 +0200
+++ b/src/sieve-tools/sieve-filter.c	Wed Aug 15 00:55:05 2012 +0200
@@ -473,7 +473,7 @@
 	}
 
 	/* Finish tool initialization */
-	svinst = sieve_tool_init_finish(sieve_tool, TRUE);
+	svinst = sieve_tool_init_finish(sieve_tool, TRUE, FALSE);
 
 	/* Enable debug extension */
 	sieve_enable_debug_extension(svinst);
diff -r 7e100dcd888a -r cfe8e9f49dfe src/sieve-tools/sieve-test.c
--- a/src/sieve-tools/sieve-test.c	Sun Aug 12 15:50:27 2012 +0200
+++ b/src/sieve-tools/sieve-test.c	Wed Aug 15 00:55:05 2012 +0200
@@ -207,7 +207,7 @@
 	}
 
 	/* Finish tool initialization */
-	svinst = sieve_tool_init_finish(sieve_tool, execute && mailloc == NULL);
+	svinst = sieve_tool_init_finish(sieve_tool, execute && mailloc == NULL, FALSE);
 
 	/* Enable debug extension */
 	sieve_enable_debug_extension(svinst);
diff -r 7e100dcd888a -r cfe8e9f49dfe src/sieve-tools/sievec.c
--- a/src/sieve-tools/sievec.c	Sun Aug 12 15:50:27 2012 +0200
+++ b/src/sieve-tools/sievec.c	Wed Aug 15 00:55:05 2012 +0200
@@ -79,7 +79,7 @@
 		outfile = "-";
 	}
 
-	svinst = sieve_tool_init_finish(sieve_tool, FALSE);
+	svinst = sieve_tool_init_finish(sieve_tool, FALSE, TRUE);
 
 	/* Enable debug extension */
 	sieve_enable_debug_extension(svinst);
diff -r 7e100dcd888a -r cfe8e9f49dfe src/testsuite/testsuite.c
--- a/src/testsuite/testsuite.c	Sun Aug 12 15:50:27 2012 +0200
+++ b/src/testsuite/testsuite.c	Wed Aug 15 00:55:05 2012 +0200
@@ -154,7 +154,7 @@
 		("sieve_global_dir", t_strconcat(sieve_dir, "included-global", NULL));
 
 	/* Finish testsuite initialization */
-	svinst = sieve_tool_init_finish(sieve_tool, FALSE);
+	svinst = sieve_tool_init_finish(sieve_tool, FALSE, FALSE);
 	testsuite_init(svinst, sieve_dir, log_stdout);
 
 	printf("Test case: %s:\n\n", scriptfile);


More information about the dovecot-cvs mailing list