From: AlphaGlider25 <12aa44edsta@gmail.com> Date: Fri, 19 Jun 2026 01:30:48 +0000 (+0200) Subject: Fix Solaris xattr retry handling X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;p=thirdparty%2Frsync.git Fix Solaris xattr retry handling Use the remaining byte count for retry writes and avoid using a size_t sentinel for write failures. --- diff --git a/lib/sysxattrs.c b/lib/sysxattrs.c index 5a6aeaad..861af981 100644 --- a/lib/sysxattrs.c +++ b/lib/sysxattrs.c @@ -227,19 +227,19 @@ int sys_lsetxattr(const char *path, const char *name, const void *value, size_t return -1; for (bufpos = 0; bufpos < size; ) { - ssize_t cnt = write(attrfd, (char*)value + bufpos, size); + ssize_t cnt = write(attrfd, (char*)value + bufpos, size - bufpos); if (cnt <= 0) { if (cnt < 0 && errno == EINTR) continue; - bufpos = -1; - break; + close(attrfd); + return -1; } bufpos += cnt; } close(attrfd); - return bufpos > 0 ? 0 : -1; + return 0; } int sys_lremovexattr(const char *path, const char *name)