From f5fa55672db9c65dffb8698eeab3173a93692e16 Mon Sep 17 00:00:00 2001 From: AlphaGlider25 <12aa44edsta@gmail.com> Date: Fri, 19 Jun 2026 03:30:48 +0200 Subject: [PATCH] Fix Solaris xattr retry handling Use the remaining byte count for retry writes and avoid using a size_t sentinel for write failures. --- lib/sysxattrs.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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) -- 2.47.3