-- ptr = new_array(char, name_len + datum_len + RPRE_LEN);
-+ ptr = new_array(char, name_len + datum_len + extra_len);
- if (!ptr)
- out_of_memory("receive_xattr");
-- name = ptr + datum_len + RPRE_LEN;
-+ name = ptr + datum_len + extra_len;
- read_buf(f, name, name_len);
+ if (name_len + datum_len + extra_len < name_len)
+ out_of_memory("receive_xattr"); /* overflow */
+ ptr = new_array(char, name_len + datum_len + extra_len);
+@@ -313,6 +327,10 @@ void receive_xattr(struct file_struct *f