Sanidhya Kashyap
2015-Mar-24 15:46 UTC
[Ocfs2-devel] [PATCH] ocfs2: trusted xattr missing CAP_SYS_ADMIN check
The trusted extended attributes are only visible to the process which hvae
CAP_SYS_ADMIN capability but the check is missing in ocfs2 xattr_handler
trusted list. The check is important because this will be used for implementing
mechanisms in the userspace for which other ordinary processes should not
have access to.
Signed-off-by: Sanidhya Kashyap <sanidhya.gatech at gmail.com>
---
fs/ocfs2/xattr.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c
index 85b190d..71a6551 100644
--- a/fs/ocfs2/xattr.c
+++ b/fs/ocfs2/xattr.c
@@ -7326,6 +7326,9 @@ static size_t ocfs2_xattr_trusted_list(struct dentry
*dentry, char *list,
const size_t prefix_len = XATTR_TRUSTED_PREFIX_LEN;
const size_t total_len = prefix_len + name_len + 1;
+ if (!capable(CAP_SYS_ADMIN))
+ return 0;
+
if (list && total_len <= list_size) {
memcpy(list, XATTR_TRUSTED_PREFIX, prefix_len);
memcpy(list + prefix_len, name, name_len);
--
2.1.0
Andrew Morton
2015-Mar-24 21:06 UTC
[Ocfs2-devel] [PATCH] ocfs2: trusted xattr missing CAP_SYS_ADMIN check
On Tue, 24 Mar 2015 11:46:32 -0400 Sanidhya Kashyap <sanidhya.gatech at gmail.com> wrote:> The trusted extended attributes are only visible to the process which hvae > CAP_SYS_ADMIN capability but the check is missing in ocfs2 xattr_handler > trusted list. The check is important because this will be used for implementing > mechanisms in the userspace for which other ordinary processes should not > have access to. > > ... > > --- a/fs/ocfs2/xattr.c > +++ b/fs/ocfs2/xattr.c > @@ -7326,6 +7326,9 @@ static size_t ocfs2_xattr_trusted_list(struct dentry *dentry, char *list, > const size_t prefix_len = XATTR_TRUSTED_PREFIX_LEN; > const size_t total_len = prefix_len + name_len + 1; > > + if (!capable(CAP_SYS_ADMIN)) > + return 0; > + > if (list && total_len <= list_size) { > memcpy(list, XATTR_TRUSTED_PREFIX, prefix_len); > memcpy(list + prefix_len, name, name_len);Ouch. Won't this break existing userspace?