From: Timo Sirainen Date: Sat, 3 Jan 2009 15:33:20 +0000 (-0500) Subject: deliver: Don't preserve HOME environment when using -d parameter. X-Git-Tag: 1.2.beta1~156 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fde20417ecdab3462915351a1808f741ed975b9e;p=thirdparty%2Fdovecot%2Fcore.git deliver: Don't preserve HOME environment when using -d parameter. --HG-- branch : HEAD --- diff --git a/src/deliver/deliver.c b/src/deliver/deliver.c index 806953ed02..d2f65d20c7 100644 --- a/src/deliver/deliver.c +++ b/src/deliver/deliver.c @@ -719,14 +719,14 @@ static void print_help(void) " [-f ] [-m ] [-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) diff --git a/src/deliver/deliver.h b/src/deliver/deliver.h index cb7fb2a78f..1ea2b6ba73 100644 --- a/src/deliver/deliver.h +++ b/src/deliver/deliver.h @@ -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, diff --git a/src/deliver/smtp-client.c b/src/deliver/smtp-client.c index dbdfd86240..f2a217a290 100644 --- a/src/deliver/smtp-client.c +++ b/src/deliver/smtp-client.c @@ -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);