I recently found a bug in the xattrs patch, where it would apply the wrong xattrs to some files in a transfer. While looking at the code, I think I found another one (it sure looks wrong, but I haven't figured out how to demonstrate it yet). Anyway, here's the patch:
The first hunk fixes the apparent bug. The second hunk fixes the demonstratable bug. I haven't (yet) looked to see if the acls patch (which I based the xattrs patch on) has the same bug(s). -- JF --- rsync-2.6.8/patches/#xattrs.diff~ 2006-06-09 22:00:05.000000000 -0400 +++ rsync-2.6.8/patches/xattrs.diff 2006-06-09 22:00:38.000000000 -0400 @@ -372,7 +372,7 @@ transfer. The resulting value is treated as though it was the permissions --- old/xattr.c +++ new/xattr.c -@@ -0,0 +1,523 @@ +@@ -0,0 +1,524 @@ +/* Extended Attribute support for rsync */ +/* Copyright (C) 2004 Red Hat, Inc */ +/* Written by Jay Fenlason, vaguely based on the ACLs patch */ @@ -590,10 +590,10 @@ + strcpy(ptr, name); + if (datum_size) + memcpy(ptr + len, datumbuf, datum_size); -+ x->rxas[curr_rsync_xal.count].name_len = len; -+ x->rxas[curr_rsync_xal.count].name = ptr; -+ x->rxas[curr_rsync_xal.count].datum_len = datum_size; -+ x->rxas[curr_rsync_xal.count].datum = ptr + len; ++ x->rxas[x->count].name_len = len; ++ x->rxas[x->count].name = ptr; ++ x->rxas[x->count].datum_len = datum_size; ++ x->rxas[x->count].datum = ptr + len; + x->count++; + } + if (x->count > 1) { @@ -656,6 +656,7 @@ + rsync_xal_l.count++; + curr_rsync_xal.count = 0; + curr_rsync_xal.alloc = 0; ++ curr_rsync_xal.rxas = NULL; +} + +/* send the make_xattr()-generated xattr list for this flist entry, -- To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html