rsync 3.0.4 ACL corruption

Wayne Davison wayned at
Fri Dec 19 00:11:21 GMT 2008

On Mon, Dec 15, 2008 at 12:20:23PM +0100, Peter Rindfuss wrote:
> The latter is a (partial) ACL from /wzb/user/spura, the "spura"
> person's home dir.

The ACL code uses a array to hold the various ACLs it finds.  The
receiver builds a list of the items that the sender sends to it, and is
told index values for matching items from the sender's list.  What I
imagine is happening for you is that the sender and receiver are getting
out of sync in their lists, so that the index in the receivers list is
not the same as the sender's list.  What we'd need to do is to compare
the arrays two arrays and see where they differ, and then figure out
where things went wrong.

If you'd like me to debug it, one thing you could do is to make a copy
of the files in the transfer, get all the ACLs right, truncate all the
files to 0 length in the copy, tar them up (assuming your tar will
preserve the ACLs), and send me a copy.

If you'd care to debug it, I'd suggest starting with some debug output
in the send_rsync_acl() and recv_rsync_acl() routines to indicate what
index number each side believes relates to a literal ACL that is being
transmitted.  e.g.:

    fprintf(stderr, "ndx: %d, user: %d, group: %d, mask: %d, other: %d, name-cnt: %d\n",
	racl_list->count-1, racl->user_obj, racl->group_obj,
	racl->group_obj, racl->mask_obj, racl->other_obj,

One will need "duo_item->racl." instead of "racl->", though.


More information about the rsync mailing list