Patch "ovl: listxattr: use strnlen()" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
ovl: listxattr: use strnlen()
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
ovl-listxattr-use-strnlen.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
7cb35119d067191ce9ebc380a599db0b03cbd9d9Mon Sep 17 00:00:00 2001
From: Miklos Szeredi <[email protected]>
Date: Thu, 1 Sep 2016 11:12:00 +0200
Subject: ovl: listxattr: use strnlen()
From: Miklos Szeredi <[email protected]>
commit 7cb35119d067191ce9ebc380a599db0b03cbd9d9 upstream.
Be defensive about what underlying fs provides us in the returned xattr list buffer. If it's not properly null terminated, bail out with a warning insead of BUG.
--- fs/overlayfs/inode.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-)
fs/overlayfs/inode.c +10 -7
@@ -277,7 +277,8 @@ ssize_t ovl_listxattr(struct dentry *denstruct path realpath;enum ovl_path_type type =ovl_path_real (dentry, &realpath);ssize_t res; -int off; +size_t len; +char *s; res =vfs_listxattr (realpath.dentry, list, size);if (res <=0 || size ==0 )
@@ -287,17 +288,19 @@ ssize_t ovl_listxattr(struct dentry *denreturn res;/* filter out private xattrs */ -for (off =0 ; off < res;) { -char *s = list + off; -size_t slen =strlen (s) +1 ; +for (s = list, len = res; len;) { +size_t slen =strnlen (s, len) +1 ; -BUG_ON (off + slen > res); +/* underlying fs providing us with an broken xattr list? */ +if (WARN_ON (slen > len)) +return -EIO ; + len -= slen;if (ovl_is_private_xattr (s)) { res -= slen; -memmove (s, s + slen, res - off); +memmove (s, s + slen, len); }else { - off += slen; + s += slen; } }
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/ovl-listxattr-use-strnlen.patch queue-4.4/ovl-remove-posix_acl_default-from-workdir.patch queue-4.4/ovl-don-t-copy-up-opaqueness.patch queue-4.4/ovl-proper-cleanup-of-workdir.patch queue-4.4/ovl-fix-workdir-creation.patch