Must bump the value of name_len when adding the rsync prefix.
authorWayne Davison <wayned@samba.org>
Sat, 4 Nov 2006 07:35:13 +0000 (07:35 +0000)
committerWayne Davison <wayned@samba.org>
Sat, 4 Nov 2006 07:35:13 +0000 (07:35 +0000)
xattrs.diff

index ae25d2c..64a7163 100644 (file)
@@ -764,7 +764,7 @@ TODO:
 +              }
 +      }
 +
-+      for (name = namebuf; list_len > 0 ; list_len -= name_len, name += name_len) {
++      for (name = namebuf; list_len > 0; list_len -= name_len, name += name_len) {
 +              rsync_xa *rxas;
 +
 +              name_len = strlen(name) + 1;
@@ -807,10 +807,10 @@ TODO:
 +              }
 +              rxas = EXPAND_ITEM_LIST(xalp, rsync_xa, RSYNC_XAL_INITIAL);
 +              rxas->name = ptr + datum_len;
-+              memcpy(rxas->name, name, name_len);
++              rxas->datum = ptr;
 +              rxas->name_len = name_len;
 +              rxas->datum_len = datum_len;
-+              rxas->datum = ptr;
++              memcpy(rxas->name, name, name_len);
 +      }
 +      if (xalp->count > 1)
 +              qsort(xalp->items, xalp->count, sizeof (rsync_xa), rsync_xal_compare_names);
@@ -952,13 +952,14 @@ TODO:
 +                              name_len -= UPRE_LEN;
 +                      } else {
 +                              name -= RPRE_LEN;
++                              name_len += RPRE_LEN;
 +                              memcpy(name, RSYNC_PREFIX, RPRE_LEN);
 +                      }
 +#endif
 +                      rxa = EXPAND_ITEM_LIST(&temp_xattr, rsync_xa, count);
 +                      rxa->name = name;
-+                      rxa->name_len = name_len;
 +                      rxa->datum = ptr;
++                      rxa->name_len = name_len;
 +                      rxa->datum_len = datum_len;
 +              }
 +              ndx = rsync_xal_l.count; /* pre-incremented count */
@@ -975,7 +976,6 @@ TODO:
 +                  "%s: receive_xattr: unknown extended attribute type tag: %c\n",
 +                  f_name(file, NULL), tag);
 +              exit_cleanup(RERR_STREAMIO);
-+              ndx = 0; /* silence a compiler warning... */
 +      }
 +
 +      SIVAL(ndx_ptr, 0, ndx);