From: Timo Sirainen Date: Thu, 19 Nov 2009 23:00:08 +0000 (-0500) Subject: master: Create base_dir with 0755 permissions, not 0777. X-Git-Tag: 2.0.beta1~105 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ffa7309bb230d77495f28364d9bc855fdd0b0625;p=thirdparty%2Fdovecot%2Fcore.git master: Create base_dir with 0755 permissions, not 0777. --HG-- branch : HEAD --- diff --git a/src/master/master-settings.c b/src/master/master-settings.c index 1fbd489d26..698dad58ce 100644 --- a/src/master/master-settings.c +++ b/src/master/master-settings.c @@ -471,7 +471,7 @@ bool master_settings_do_fixes(const struct master_settings *set) /* since base dir is under /var/run by default, it may have been deleted. */ - if (mkdir_parents(set->base_dir, 0777) < 0 && errno != EEXIST) { + if (mkdir_parents(set->base_dir, 0755) < 0 && errno != EEXIST) { i_error("mkdir(%s) failed: %m", set->base_dir); return FALSE; } @@ -484,6 +484,14 @@ bool master_settings_do_fixes(const struct master_settings *set) i_error("%s is not a directory", set->base_dir); return FALSE; } + if ((st.st_mode & 0777) == 0777) { + /* FIXME: backwards compatibility: v1.2 was creating + base_dir with 0777 permissions.. */ + i_warning("Fixing permissions of %s to be world-readable", + set->base_dir); + if (chmod(set->base_dir, 0755) < 0) + i_error("chmod(%s) failed: %m", set->base_dir); + } /* Make sure our permanent state directory exists */ if (mkdir_parents(PKG_STATEDIR, 0750) < 0 && errno != EEXIST) {