diff -r -u -N a/src/copy.c b/src/copy.c --- a/src/copy.c 2010-04-20 21:52:04.000000000 +0200 +++ b/src/copy.c 2010-09-25 13:44:01.000000000 +0200 @@ -2007,7 +2007,7 @@ used as the 3rd argument in the open call. Historical practice passed all the source mode bits to 'open', but the extra bits were ignored, so it should be the same either way. */ - if (! copy_reg (src_name, dst_name, x, src_mode & S_IRWXUGO, + if (! copy_reg (src_name, dst_name, x, dst_mode_bits & S_IRWXUGO, omitted_permissions, &new_dst, &src_sb)) goto un_backup; }