On Fri, 2008-02-15 at 14:53 +0200, Timo Sirainen wrote:
> On Fri, 2008-02-15 at 13:40 +0100, Diego Liziero wrote:
> > This patch adds the bool option home_slash_dot_slash_chroot (feel free
> > to change this name to something easier to understand). Setting this to
> > "no" disables the wu-ftp style /./ chroot.
> 
> There are already too many options, but I guess valid_chroot_dirs could
> be used for this. Committed to v1.1:
> http://hg.dovecot.org/dovecot-1.1/rev/17c65dfdac2a

Great, but this patch solves partially what we would like to have:
it allows chroot options to be completely disabled, but it doesn't allow
to override /./ chroot with a global mail_chroot option.

This happens because to have mail_chroot config option working, we have
to add its entry in valid_chroot_dirs, too.
This should not be necessary.

In this case validate_chroot should be called before checking for
mail_chroot (see the patch below).

Thank you for your quick answer,
Regards,
Diego Liziero.
diff -dur dovecot-1.0.10/src/master/mail-process.c dovecot-1.0.10-chroot/src/master/mail-process.c
--- dovecot-1.0.10/src/master/mail-process.c	2007-12-20 21:51:23.000000000 +0100
+++ dovecot-1.0.10-chroot/src/master/mail-process.c	2008-02-16 13:26:16.000000000 +0100
@@ -492,9 +492,6 @@
 			return FALSE;
 	}
 
-	if (*chroot_dir == '\0' && *set->mail_chroot != '\0')
-		chroot_dir = set->mail_chroot;
-
 	if (*chroot_dir != '\0') {
 		if (!validate_chroot(set, chroot_dir)) {
 			i_error("Invalid chroot directory '%s' (user %s) "
@@ -502,6 +499,12 @@
 				chroot_dir, user);
 			return FALSE;
 		}
+	}
+
+	if (*chroot_dir == '\0' && *set->mail_chroot != '\0')
+		chroot_dir = set->mail_chroot;
+
+        if (*chroot_dir != '\0') {
 		if (set->mail_drop_priv_before_exec) {
 			i_error("Can't chroot to directory '%s' (user %s) "
 				"with mail_drop_priv_before_exec=yes",
Only in dovecot-1.0.10-chroot/src/master: mail-process.c.orig

Reply via email to