Rsync 2.6.9pre2 tries to read ACLs of nonexistent files

Matt McCutchen hashproduct+rsync at gmail.com
Sat Oct 21 23:41:59 GMT 2006


On 10/21/06, Wayne Davison <wayned at samba.org> wrote:
> On Sat, Oct 21, 2006 at 04:27:17PM -0400, Matt McCutchen wrote:
> >               if (preserve_acls && real_ret == 0)
> >                       get_acl(fname, &real_sx);
>
> That should be checking fnamecmp, not fname.  I've just commited a fix
> for patches/acls.diff.

I still get the error message.  There were two occurrences of
"get_acl(fname, &real_sx)" in generator.c, and you fixed only the one
that was not producing the error in my scenario.  The other one needs
to be fixed too.

Moreover, not only do I get the error message, the sender complains
that the connection closed unexpectedly.  In fact, the generator
crashed on the "free_acl(sxp);" call at line 521 of acls.c because it
tried to free the uninitialized pointers racl->users and racl->groups.
 To fix this, don't store racl into sxp until after racl has been
filled (or get_acl has returned failure).  I bet Checker would have
caught this mistake if the build farm ran it on the ACL version of
rsync.

Attached is a metapatch to acls.diff that fixes the second get_acl
call and fixes the crash in get_acl.  However, I still don't
understand why a basis file found in a basis dir should cause real_ret
to be set to zero while a fuzzy basis file shouldn't.

Matt
-------------- next part --------------
A non-text attachment was scrubbed...
Name: get_acl.diff
Type: text/x-patch
Size: 1356 bytes
Desc: not available
Url : http://lists.samba.org/archive/rsync/attachments/20061021/0f5f7af6/get_acl.bin


More information about the rsync mailing list