diff options
Diffstat (limited to 'meta-rcar-gen2/recipes-kernel/linux/linux-renesas/smack/0034-Smack-fix-behavior-of-smack_inode_listsecurity.patch')
-rw-r--r-- | meta-rcar-gen2/recipes-kernel/linux/linux-renesas/smack/0034-Smack-fix-behavior-of-smack_inode_listsecurity.patch | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/meta-rcar-gen2/recipes-kernel/linux/linux-renesas/smack/0034-Smack-fix-behavior-of-smack_inode_listsecurity.patch b/meta-rcar-gen2/recipes-kernel/linux/linux-renesas/smack/0034-Smack-fix-behavior-of-smack_inode_listsecurity.patch new file mode 100644 index 0000000..538408f --- /dev/null +++ b/meta-rcar-gen2/recipes-kernel/linux/linux-renesas/smack/0034-Smack-fix-behavior-of-smack_inode_listsecurity.patch @@ -0,0 +1,45 @@ +From fbe0bb11353782b18ebf9455f36cce1da1003a90 Mon Sep 17 00:00:00 2001 +From: Konstantin Khlebnikov <k.khlebnikov@samsung.com> +Date: Thu, 7 Aug 2014 20:52:33 +0400 +Subject: [PATCH 34/54] Smack: fix behavior of smack_inode_listsecurity + +Security operation ->inode_listsecurity is used for generating list of +available extended attributes for syscall listxattr. Currently it's used +only in nfs4 or if filesystem doesn't provide i_op->listxattr. + +The list is the set of NULL-terminated names, one after the other. +This method must include zero byte at the and into result. + +Also this function must return length even if string does not fit into +output buffer or it is NULL, see similar method in selinux and man listxattr. + +Signed-off-by: Konstantin Khlebnikov <k.khlebnikov@samsung.com> +--- + security/smack/smack_lsm.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c +index 1085bb7..f72d17c 100644 +--- a/security/smack/smack_lsm.c ++++ b/security/smack/smack_lsm.c +@@ -1122,13 +1122,12 @@ static int smack_inode_getsecurity(const struct inode *inode, + static int smack_inode_listsecurity(struct inode *inode, char *buffer, + size_t buffer_size) + { +- int len = strlen(XATTR_NAME_SMACK); ++ int len = sizeof(XATTR_NAME_SMACK); + +- if (buffer != NULL && len <= buffer_size) { ++ if (buffer != NULL && len <= buffer_size) + memcpy(buffer, XATTR_NAME_SMACK, len); +- return len; +- } +- return -EINVAL; ++ ++ return len; + } + + /** +-- +2.1.4 + |