diff --git a/main.c b/main.c index b17a7ca..14ac260 100644 --- a/main.c +++ b/main.c @@ -1373,9 +1373,10 @@ safe_read_xattr (char **ret, int sfd, const char *name, size_t initial_size) char *tmp; s = fgetxattr (sfd, name, buffer, current_size); - if (s < 0) + if (s >= 0 && s < current_size) break; - if (s < current_size) + + if (s < 0 && errno != ERANGE) break; current_size *= 2; diff --git a/tests/fedora-installs.sh b/tests/fedora-installs.sh index e0c9052..19835ab 100755 --- a/tests/fedora-installs.sh +++ b/tests/fedora-installs.sh @@ -70,6 +70,9 @@ umount merged touch lower/file-lower-layer +# set a "big" xattr +setfattr -n user.big-xattr -v "$(seq 1000 | tr -d '\n')" lower/file-lower-layer + # no upper layer fuse-overlayfs -o lowerdir=lower merged