[PATCH Quantal/Raring SRU] Smack: Fix the bug smackcipso can't set CIPSO correctly
Tim Gardner
tim.gardner at canonical.com
Tue Oct 8 14:23:38 UTC 2013
From: "Passion,Zhao" <passion.zhao at intel.com>
BugLink: http://bugs.launchpad.net/bugs/1236743
Bug report: https://tizendev.org/bugs/browse/TDIS-3891
The reason is userspace libsmack only use "smackfs/cipso2" long-label interface,
but the code's logical is still for orginal fixed length label. Now update
smack_cipso_apply() to support flexible label (<=256 including tailing '\0')
There is also a bug in kernel/security/smack/smackfs.c:
When smk_set_cipso() parsing the CIPSO setting from userspace, the offset of
CIPSO level should be "strlen(label)+1" instead of "strlen(label)"
Signed-off-by: Passion,Zhao <passion.zhao at intel.com>
(cherry picked from commit 0fcfee61d63b82c1eefb5b1a914240480f17d63f)
Signed-off-by: Tim Gardner <tim.gardner at canonical.com>
---
This seems like a good candidate for stable 3.5 - 3.10
security/smack/smackfs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c
index 76a5dca..c4fe705 100644
--- a/security/smack/smackfs.c
+++ b/security/smack/smackfs.c
@@ -818,7 +818,7 @@ static ssize_t smk_set_cipso(struct file *file, const char __user *buf,
if (format == SMK_FIXED24_FMT)
rule += SMK_LABELLEN;
else
- rule += strlen(skp->smk_known);
+ rule += strlen(skp->smk_known) + 1;
ret = sscanf(rule, "%d", &maplevel);
if (ret != 1 || maplevel > SMACK_CIPSO_MAXLEVEL)
--
1.7.9.5
More information about the kernel-team
mailing list