X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/18bd04018d6e9fc35463221ee995a5266700b404..17cc4c383b7548ea75e6f615659943b49e941cdf:/lib/sysxattrs.c?ds=sidebyside diff --git a/lib/sysxattrs.c b/lib/sysxattrs.c index 7845d59e..76b6802d 100644 --- a/lib/sysxattrs.c +++ b/lib/sysxattrs.c @@ -145,8 +145,8 @@ static ssize_t read_xattr(int attrfd, void *buf, size_t buflen) ret = -1; } else { size_t bufpos; - for (bufpos = 0; bufpos < buflen; ) { - ssize_t cnt = read(attrfd, buf + bufpos, buflen - bufpos); + for (bufpos = 0; bufpos < sb.st_size; ) { + ssize_t cnt = read(attrfd, buf + bufpos, sb.st_size - bufpos); if (cnt <= 0) { if (cnt < 0 && errno == EINTR) continue; @@ -254,6 +254,8 @@ ssize_t sys_llistxattr(const char *path, char *list, size_t size) continue; if ((ret += len+1) > size) { + if (size == 0) + continue; ret = -1; errno = ERANGE; break;