]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Preserve permission settings in master's service blocks.
authorTimo Sirainen <tss@iki.fi>
Fri, 20 Aug 2010 17:19:04 +0000 (18:19 +0100)
committerTimo Sirainen <tss@iki.fi>
Fri, 20 Aug 2010 17:19:04 +0000 (18:19 +0100)
Most importantly preserve extra_groups setting.

src/lib-storage/mail-storage-service.c

index 1f9777479e57115b3648994fb4d6138908ec2320..794468e890348c1134107ea4221846238fbc8aba 100644 (file)
@@ -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;