From: Timo Sirainen Date: Sun, 14 Aug 2011 22:11:47 +0000 (+0300) Subject: lib-storage: Fixed mail_storage_copy_can_use_hardlink() for mode=0600 with different... X-Git-Tag: 2.1.alpha1~99 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8eb118a6614e7faebb3564d09b8b86ea98fd8ae1;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Fixed mail_storage_copy_can_use_hardlink() for mode=0600 with different uids. --- diff --git a/src/lib-storage/mail-copy.c b/src/lib-storage/mail-copy.c index 1f97fddc63..1c66543db0 100644 --- a/src/lib-storage/mail-copy.c +++ b/src/lib-storage/mail-copy.c @@ -83,6 +83,13 @@ bool mail_storage_copy_can_use_hardlink(struct mailbox *src, const struct mailbox_permissions *dest_perm = mailbox_get_permissions(dest); + if (src_perm->file_uid != dest_perm->file_uid) { + /* if we don't have read permissions, we can't hard link + (basically we'll catch 0600 files here) */ + if ((src_perm->file_create_mode & 0022) == 0) + return FALSE; + } + return src_perm->file_create_mode == dest_perm->file_create_mode && src_perm->file_create_gid == dest_perm->file_create_gid && !dest->disable_reflink_copy_to;