]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
chdir() to base_dir at startup. chdir() mail processes to home dir if it's
authorTimo Sirainen <tss@iki.fi>
Wed, 16 Apr 2003 16:05:45 +0000 (19:05 +0300)
committerTimo Sirainen <tss@iki.fi>
Wed, 16 Apr 2003 16:05:45 +0000 (19:05 +0300)
known.

--HG--
branch : HEAD

src/master/mail-process.c
src/master/main.c

index 9a02288701cda0959946c75bd6f1a1817f1593e3..3aca9a62c8cfa921d2c48aadef22646098fff655 100644 (file)
@@ -105,7 +105,7 @@ int create_mail_process(int socket, struct ip_addr *ip,
                        const char *data)
 {
        static const char *argv[] = { NULL, NULL, NULL };
-       const char *host, *mail;
+       const char *host, *mail, *home_dir;
        char title[1024];
        pid_t pid;
        int i, err;
@@ -154,8 +154,14 @@ int create_mail_process(int socket, struct ip_addr *ip,
 
        restrict_process_size(process_size, (unsigned int)-1);
 
+       home_dir = data + reply->home_idx;
+       if (*home_dir != '\0') {
+               if (chdir(home_dir) < 0)
+                       i_fatal("chdir(%s) failed: %m", home_dir);
+       }
+
        env_put("LOGGED_IN=1");
-       env_put(t_strconcat("HOME=", data + reply->home_idx, NULL));
+       env_put(t_strconcat("HOME=", home_dir, NULL));
        env_put(t_strconcat("MAIL_CACHE_FIELDS=",
                            set->mail_cache_fields, NULL));
        env_put(t_strconcat("MAIL_NEVER_CACHE_FIELDS=",
index 7bdc0903b5e7bb39a288fccb67b0668d553596e0..4a05f85e802612bb371326d2d23d4cb1ab87d957 100644 (file)
@@ -396,6 +396,9 @@ static void daemonize(void)
 
        if (setsid() < 0)
                i_fatal("setsid() failed: %m");
+
+       if (chdir(set->base_dir) < 0)
+               i_fatal("chdir(%s) failed: %m", set->base_dir);
 }
 
 static void print_help(void)