| From 97ecdadc284e820931f27c6345b0ff8b85792346 Mon Sep 17 00:00:00 2001 |
| From: Etienne Basset <etienne.basset@numericable.fr> |
| Date: Tue, 31 Mar 2009 23:54:11 +0200 |
| Subject: security/smack: fix oops when setting a size 0 SMACK64 xattr |
| |
| From: Etienne Basset <etienne.basset@numericable.fr> |
| |
| upstream commit: 4303154e86597885bc3cbc178a48ccbc8213875f |
| |
| this patch fix an oops in smack when setting a size 0 SMACK64 xattr eg |
| attr -S -s SMACK64 -V '' somefile |
| This oops because smk_import_entry treats a 0 length as SMK_MAXLEN |
| |
| Signed-off-by: Etienne Basset <etienne.basset@numericable.fr> |
| Reviewed-by: James Morris <jmorris@namei.org> |
| Acked-by: Casey Schaufler <casey@schaufler-ca.com> |
| Signed-off-by: Chris Wright <chrisw@sous-sol.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| --- |
| security/smack/smack_lsm.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/security/smack/smack_lsm.c |
| +++ b/security/smack/smack_lsm.c |
| @@ -604,6 +604,8 @@ static int smack_inode_setxattr(struct d |
| strcmp(name, XATTR_NAME_SMACKIPOUT) == 0) { |
| if (!capable(CAP_MAC_ADMIN)) |
| rc = -EPERM; |
| + if (size == 0) |
| + rc = -EINVAL; |
| } else |
| rc = cap_inode_setxattr(dentry, name, value, size, flags); |
| |
| @@ -1360,7 +1362,7 @@ static int smack_inode_setsecurity(struc |
| struct socket *sock; |
| int rc = 0; |
| |
| - if (value == NULL || size > SMK_LABELLEN) |
| + if (value == NULL || size > SMK_LABELLEN || size == 0) |
| return -EACCES; |
| |
| sp = smk_import(value, size); |