diff options
Diffstat (limited to 'security/smack/smackfs.c')
-rw-r--r-- | security/smack/smackfs.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c index 80f4b4a45725..160aa08e3cd5 100644 --- a/security/smack/smackfs.c +++ b/security/smack/smackfs.c | |||
@@ -139,7 +139,7 @@ const char *smack_cipso_option = SMACK_CIPSO_OPTION; | |||
139 | * SMK_LOADLEN: Smack rule length | 139 | * SMK_LOADLEN: Smack rule length |
140 | */ | 140 | */ |
141 | #define SMK_OACCESS "rwxa" | 141 | #define SMK_OACCESS "rwxa" |
142 | #define SMK_ACCESS "rwxat" | 142 | #define SMK_ACCESS "rwxatl" |
143 | #define SMK_OACCESSLEN (sizeof(SMK_OACCESS) - 1) | 143 | #define SMK_OACCESSLEN (sizeof(SMK_OACCESS) - 1) |
144 | #define SMK_ACCESSLEN (sizeof(SMK_ACCESS) - 1) | 144 | #define SMK_ACCESSLEN (sizeof(SMK_ACCESS) - 1) |
145 | #define SMK_OLOADLEN (SMK_LABELLEN + SMK_LABELLEN + SMK_OACCESSLEN) | 145 | #define SMK_OLOADLEN (SMK_LABELLEN + SMK_LABELLEN + SMK_OACCESSLEN) |
@@ -282,6 +282,10 @@ static int smk_perm_from_str(const char *string) | |||
282 | case 'T': | 282 | case 'T': |
283 | perm |= MAY_TRANSMUTE; | 283 | perm |= MAY_TRANSMUTE; |
284 | break; | 284 | break; |
285 | case 'l': | ||
286 | case 'L': | ||
287 | perm |= MAY_LOCK; | ||
288 | break; | ||
285 | default: | 289 | default: |
286 | return perm; | 290 | return perm; |
287 | } | 291 | } |
@@ -452,7 +456,7 @@ static ssize_t smk_write_rules_list(struct file *file, const char __user *buf, | |||
452 | /* | 456 | /* |
453 | * Minor hack for backward compatibility | 457 | * Minor hack for backward compatibility |
454 | */ | 458 | */ |
455 | if (count != SMK_OLOADLEN && count != SMK_LOADLEN) | 459 | if (count < SMK_OLOADLEN || count > SMK_LOADLEN) |
456 | return -EINVAL; | 460 | return -EINVAL; |
457 | } else { | 461 | } else { |
458 | if (count >= PAGE_SIZE) { | 462 | if (count >= PAGE_SIZE) { |
@@ -592,6 +596,8 @@ static void smk_rule_show(struct seq_file *s, struct smack_rule *srp, int max) | |||
592 | seq_putc(s, 'a'); | 596 | seq_putc(s, 'a'); |
593 | if (srp->smk_access & MAY_TRANSMUTE) | 597 | if (srp->smk_access & MAY_TRANSMUTE) |
594 | seq_putc(s, 't'); | 598 | seq_putc(s, 't'); |
599 | if (srp->smk_access & MAY_LOCK) | ||
600 | seq_putc(s, 'l'); | ||
595 | 601 | ||
596 | seq_putc(s, '\n'); | 602 | seq_putc(s, '\n'); |
597 | } | 603 | } |