Fix Solaris xattr retry handling

Use the remaining byte count for retry writes and avoid using a
size_t sentinel for write failures.
This commit is contained in:
AlphaGlider25
2026-06-19 03:30:48 +02:00
committed by Andrew Tridgell
parent 5553271274
commit f5fa55672d

View File

@@ -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)