]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
service settings: Base relative chroots under base_dir.
authorTimo Sirainen <tss@iki.fi>
Mon, 4 May 2009 22:11:19 +0000 (18:11 -0400)
committerTimo Sirainen <tss@iki.fi>
Mon, 4 May 2009 22:11:19 +0000 (18:11 -0400)
--HG--
branch : HEAD

src/master/master-settings.c

index 76c55e008e6409696be2049348a7f05d291d94de..b97b96cd3c998811ef5b583a201be99989e31e9f 100644 (file)
@@ -243,6 +243,19 @@ master_settings_verify(void *_set, pool_t pool, const char **error_r)
                                p_strconcat(pool, set->libexec_dir, "/",
                                            services[i]->executable, NULL);
                }
+               if (*services[i]->chroot != '/' &&
+                   *services[i]->chroot != '\0') {
+                       services[i]->chroot =
+                               p_strconcat(pool, set->base_dir, "/",
+                                           services[i]->chroot, NULL);
+               }
+               if (services[i]->drop_priv_before_exec &&
+                   *services[i]->chroot != '\0') {
+                       *error_r = t_strdup_printf("service(%s): "
+                               "drop_priv_before_exec=yes can't be "
+                               "used with chroot", services[i]->executable);
+                       return FALSE;
+               }
                fix_file_listener_paths(&services[i]->unix_listeners,
                                        pool, set->base_dir);
                fix_file_listener_paths(&services[i]->fifo_listeners,