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