]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
deliver: Don't preserve HOME environment when using -d parameter.
authorTimo Sirainen <tss@iki.fi>
Sat, 3 Jan 2009 15:33:20 +0000 (10:33 -0500)
committerTimo Sirainen <tss@iki.fi>
Sat, 3 Jan 2009 15:33:20 +0000 (10:33 -0500)
--HG--
branch : HEAD

src/deliver/deliver.c
src/deliver/deliver.h
src/deliver/smtp-client.c

index 806953ed02e283ea8b4cae883438406b85668716..d2f65d20c76fbd725974274fbf89ee886dd2f349 100644 (file)
@@ -719,14 +719,14 @@ static void print_help(void)
 "               [-f <envelope sender>] [-m <mailbox>] [-n] [-s] [-e] [-k]\n");
 }
 
-void deliver_env_clean(void)
+void deliver_env_clean(bool preserve_home)
 {
        const char *tz, *home;
 
        tz = getenv("TZ");
        if (tz != NULL)
                tz = t_strconcat("TZ=", tz, NULL);
-       home = getenv("HOME");
+       home = preserve_home ? getenv("HOME") : NULL;
        if (home != NULL)
                home = t_strconcat("HOME=", home, NULL);
 
@@ -920,7 +920,7 @@ int main(int argc, char *argv[])
        if (user == NULL)
                user = getenv("USER");
        if (!keep_environment)
-               deliver_env_clean();
+               deliver_env_clean(!user_auth);
 
        process_euid = geteuid();
        if (user_auth)
index cb7fb2a78f01697ddf60b14c34c8e969e666dc06..1ea2b6ba73756715e5a236738c9d894a9aabe3dd 100644 (file)
@@ -34,7 +34,7 @@ typedef int deliver_mail_func_t(struct mail_namespace *namespaces,
 
 extern deliver_mail_func_t *deliver_mail;
 
-void deliver_env_clean(void);
+void deliver_env_clean(bool preserve_home);
 
 /* Save a mail into given mailbox with given flags and keywords. */
 int deliver_save(struct mail_namespace *namespaces,
index dbdfd862403c4f79077085031687a07bcce97b2e..f2a217a2901a10229b23eca0f10d88ff970c5364 100644 (file)
@@ -46,7 +46,7 @@ smtp_client_run_sendmail(const char *destination,
        if (dup2(fd, STDIN_FILENO) < 0)
                i_fatal("dup2() failed: %m");
 
-       deliver_env_clean();
+       deliver_env_clean(TRUE);
 
        (void)execv(sendmail_path, (void *)argv);
        i_fatal("execv(%s) failed: %m", sendmail_path);