From: Timo Sirainen Date: Fri, 20 Aug 2010 17:19:04 +0000 (+0100) Subject: lib-storage: Preserve permission settings in master's service blocks. X-Git-Tag: 2.0.1~27 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1503ac7619d97193d6690292b5f9523552c5d6ce;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Preserve permission settings in master's service blocks. Most importantly preserve extra_groups setting. --- diff --git a/src/lib-storage/mail-storage-service.c b/src/lib-storage/mail-storage-service.c index 1f9777479e..794468e890 100644 --- a/src/lib-storage/mail-storage-service.c +++ b/src/lib-storage/mail-storage-service.c @@ -301,6 +301,7 @@ service_drop_privileges(const struct mail_user_settings *set, current_euid = geteuid(); restrict_access_init(&rset); + restrict_access_get_env(&rset); if (*set->mail_uid != '\0') { if (!parse_uid(set->mail_uid, &rset.uid)) { *error_r = t_strdup_printf("Unknown mail_uid user: %s", @@ -341,8 +342,10 @@ service_drop_privileges(const struct mail_user_settings *set, return -1; } } - if (*set->mail_access_groups != '\0') - rset.extra_groups = set->mail_access_groups; + if (*set->mail_access_groups != '\0') { + rset.extra_groups = t_strconcat(set->mail_access_groups, ",", + rset.extra_groups, NULL); + } rset.first_valid_gid = set->first_valid_gid; rset.last_valid_gid = set->last_valid_gid;