changeset 8821:71cfd00e1375 HEAD

master: If login process has -D parameter, make login directory writable.
author Timo Sirainen <tss@iki.fi>
date Fri, 13 Mar 2009 15:11:46 -0400
parents 6131143fef16
children 978010934c02
files src/master/master-settings.c
diffstat 1 files changed, 15 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/master/master-settings.c	Fri Mar 13 14:50:41 2009 -0400
+++ b/src/master/master-settings.c	Fri Mar 13 15:11:46 2009 -0400
@@ -941,6 +941,19 @@
 	return TRUE;
 }
 
+static bool login_want_core_dumps(struct settings *set)
+{
+	const char *p;
+
+	p = strstr(set->server->pop3->login_executable, " -D");
+	if (p != NULL && p[3] == '\0')
+		return TRUE;
+	p = strstr(set->server->imap->login_executable, " -D");
+	if (p != NULL && p[3] == '\0')
+		return TRUE;
+	return FALSE;
+}
+
 static bool settings_do_fixes(struct settings *set)
 {
 	struct stat st;
@@ -972,7 +985,8 @@
 		   empty. with external auth we wouldn't want to delete
 		   existing sockets or break the permissions required by the
 		   auth server. */
-		if (safe_mkdir(set->login_dir, 0750,
+		mode_t mode = login_want_core_dumps(set) ? 0770 : 0750;
+		if (safe_mkdir(set->login_dir, mode,
 			       master_uid, set->server->login_gid) == 0) {
 			i_warning("Corrected permissions for login directory "
 				  "%s", set->login_dir);