changeset 8587:db0d0d7385fd HEAD

deliver: Don't preserve HOME environment when using -d parameter.
author Timo Sirainen <tss@iki.fi>
date Sat, 03 Jan 2009 10:33:20 -0500
parents 71cc9f3e3f2d
children 73b8468c3b87
files src/deliver/deliver.c src/deliver/deliver.h src/deliver/smtp-client.c
diffstat 3 files changed, 5 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/deliver/deliver.c	Wed Dec 31 01:49:50 2008 +0200
+++ b/src/deliver/deliver.c	Sat Jan 03 10:33:20 2009 -0500
@@ -719,14 +719,14 @@
 "               [-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 @@
 	if (user == NULL)
 		user = getenv("USER");
 	if (!keep_environment)
-		deliver_env_clean();
+		deliver_env_clean(!user_auth);
 
 	process_euid = geteuid();
 	if (user_auth)
--- a/src/deliver/deliver.h	Wed Dec 31 01:49:50 2008 +0200
+++ b/src/deliver/deliver.h	Sat Jan 03 10:33:20 2009 -0500
@@ -34,7 +34,7 @@
 
 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,
--- a/src/deliver/smtp-client.c	Wed Dec 31 01:49:50 2008 +0200
+++ b/src/deliver/smtp-client.c	Sat Jan 03 10:33:20 2009 -0500
@@ -46,7 +46,7 @@
 	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);