]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Fixed mail_storage_copy_can_use_hardlink() for mode=0600 with different...
authorTimo Sirainen <tss@iki.fi>
Sun, 14 Aug 2011 22:11:47 +0000 (01:11 +0300)
committerTimo Sirainen <tss@iki.fi>
Sun, 14 Aug 2011 22:11:47 +0000 (01:11 +0300)
src/lib-storage/mail-copy.c

index 1f97fddc6399f8d4329e5815bce9ab757504060a..1c66543db09aa465a54d8d51631f802defa8caab 100644 (file)
@@ -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;