dovecot-1.2: Maildir++ quota: Create the missing directory using...
dovecot at dovecot.org
dovecot at dovecot.org
Mon Sep 22 21:55:12 EEST 2008
details: http://hg.dovecot.org/dovecot-1.2/rev/329d8757e5c2
changeset: 8209:329d8757e5c2
user: Timo Sirainen <tss at iki.fi>
date: Mon Sep 22 21:55:07 2008 +0300
description:
Maildir++ quota: Create the missing directory using the correct permissions.
diffstat:
1 file changed, 13 insertions(+), 5 deletions(-)
src/plugins/quota/quota-maildir.c | 18 +++++++++++++-----
diffs (48 lines):
diff -r f67d4a0d423b -r 329d8757e5c2 src/plugins/quota/quota-maildir.c
--- a/src/plugins/quota/quota-maildir.c Mon Sep 22 21:51:29 2008 +0300
+++ b/src/plugins/quota/quota-maildir.c Mon Sep 22 21:55:07 2008 +0300
@@ -224,21 +224,23 @@ static int maildirsize_write(struct mail
struct dotlock *dotlock;
const char *p, *dir;
string_t *str;
- mode_t mode;
- gid_t gid;
+ mode_t mode, dir_mode;
+ gid_t gid, dir_gid;
int fd;
i_assert(root->fd == -1);
/* figure out what permissions we should use for maildirsize.
use the inbox namespace's permissions if possible. */
- mode = 0600;
- gid = (gid_t)-1;
+ mode = 0600; dir_mode = 0700;
+ gid = dir_gid = (gid_t)-1;
storages = array_get(&root->root.quota->storages, &count);
for (i = 0; i < count; i++) {
if ((storages[i]->ns->flags & NAMESPACE_FLAG_INBOX) != 0) {
mailbox_list_get_permissions(storages[i]->ns->list,
&mode, &gid);
+ mailbox_list_get_dir_permissions(storages[i]->ns->list,
+ &dir_mode, &dir_gid);
break;
}
}
@@ -252,9 +254,15 @@ static int maildirsize_write(struct mail
/* the control directory doesn't exist yet? create it */
p = strrchr(path, '/');
dir = t_strdup_until(path, p);
- if (mkdir_parents(dir, 0700) < 0 && errno != EEXIST) {
+ if (mkdir_parents(dir, dir_mode) < 0 && errno != EEXIST) {
i_error("mkdir_parents(%s) failed: %m", dir);
return -1;
+ }
+ if (dir_gid != (gid_t)-1) {
+ if (chown(dir, (uid_t)-1, dir_gid) < 0) {
+ i_error("chown(%s,-1,%ld) failed: %m",
+ dir, (long)dir_gid);
+ }
}
fd = file_dotlock_open_mode(&dotlock_settings, path,
DOTLOCK_CREATE_FLAG_NONBLOCK,
More information about the dovecot-cvs
mailing list