- rxas->name = ptr + datum_len;
- rxas->datum = ptr;
-@@ -293,20 +315,23 @@ void receive_xattr(struct file_struct *f
- rsync_xa *rxa;
- size_t name_len = read_int(f);
- size_t datum_len = read_int(f);
-+ size_t extra_len = am_root < 0 ? FPRE_LEN + RPRE_LEN : RPRE_LEN;
- if (name_len + datum_len < name_len)
- out_of_memory("receive_xattr"); /* overflow */
--#ifndef HAVE_LINUX_XATTRS
-- if (name_len + datum_len + RPRE_LEN < RPRE_LEN)
-+ if (name_len + datum_len + extra_len < extra_len)
- out_of_memory("receive_xattr"); /* overflow */
+ rxas->name = ptr + name_offset;
+ memcpy(rxas->name, name, name_len);
+@@ -576,13 +593,9 @@ void receive_xattr(struct file_struct *f
+ size_t name_len = read_abbrevint(f);
+ size_t datum_len = read_abbrevint(f);
+ size_t dget_len = datum_len > MAX_FULL_DATUM ? 1 + MAX_DIGEST_LEN : datum_len;
+-#ifdef HAVE_LINUX_XATTRS
+- size_t extra_len = 0;
+-#else
+- size_t extra_len = am_root ? RPRE_LEN : 0;
++ size_t extra_len = MIGHT_NEED_RPRE ? RPRE_LEN : 0;
+ if (dget_len + extra_len < dget_len)
+ out_of_memory("receive_xattr"); /* overflow */