Avoid an xattr-finding glitch on the receiver.
authorWayne Davison <wayned@samba.org>
Mon, 26 May 2014 21:04:49 +0000 (14:04 -0700)
committerWayne Davison <wayned@samba.org>
Mon, 26 May 2014 21:08:31 +0000 (14:08 -0700)
Fixes bug 9594.

xattrs.c

index 01160a69a252cdcf86cd45adb577e057236dcc54..57d40e1762cb7cb945305bf6a6c7038740834146 100644 (file)
--- a/xattrs.c
+++ b/xattrs.c
@@ -611,9 +611,10 @@ int recv_xattr_request(struct file_struct *file, int f_in)
        num = 0;
        while ((rel_pos = read_varint(f_in)) != 0) {
                num += rel_pos;
-               while (cnt && rxa->num < num) {
-                   rxa++;
-                   cnt--;
+               /* Note that the sender-related num values may not be in order on the receiver! */
+               while (cnt && (am_sender ? rxa->num < num : rxa->num != num)) {
+                       rxa++;
+                       cnt--;
                }
                if (!cnt || rxa->num != num) {
                        rprintf(FERROR, "[%s] could not find xattr #%d for %s\n",