X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/05a652d0b712af225d6cb72aa31beafaff601151..2523d0cc14365293a6d0ecb4e5191e50d92adaa6:/lib/sysxattrs.c diff --git a/lib/sysxattrs.c b/lib/sysxattrs.c index 40619e32..1512518c 100644 --- a/lib/sysxattrs.c +++ b/lib/sysxattrs.c @@ -133,14 +133,14 @@ static ssize_t read_xattr(int attrfd, void *buf, size_t buflen) STRUCT_STAT sb; ssize_t ret; - if (fstat(fd, &sb) < 0) + if (fstat(attrfd, &sb) < 0) ret = -1; else if (sb.st_size > SSIZE_MAX) { errno = ERANGE; ret = -1; - } else if (size == 0) + } else if (buflen == 0) ret = sb.st_size; - else if (sb.st_size > size) { + else if (sb.st_size > buflen) { errno = ERANGE; ret = -1; } else { @@ -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;