From 11ad142525a606f327745210e709dcbd23844fd2 Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Sun, 21 Mar 2021 13:54:34 +0100 Subject: [PATCH] main: fix reading xattrs longer than 256 bytes fix reading extended attributes longer than 256 bytes. Closes: https://github.com/containers/fuse-overlayfs/issues/284 Signed-off-by: Giuseppe Scrivano --- main.c | 5 +++-- tests/fedora-installs.sh | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) 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