diff options
author | Mimi Zohar <zohar@linux.vnet.ibm.com> | 2017-11-08 07:38:28 -0500 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2018-06-16 22:21:43 +0100 |
commit | fea682d93e06913a93d8ddad71b24a39e11a361b (patch) | |
tree | 933e2158ca2bed89416138aac9ec726fb50b270a | |
parent | a446b514f70dadc9780588868e635df947dc43ac (diff) | |
download | linux-stable-fea682d93e06913a93d8ddad71b24a39e11a361b.tar.gz linux-stable-fea682d93e06913a93d8ddad71b24a39e11a361b.tar.bz2 linux-stable-fea682d93e06913a93d8ddad71b24a39e11a361b.zip |
ima: relax requiring a file signature for new files with zero length
commit b7e27bc1d42e8e0cc58b602b529c25cd0071b336 upstream.
Custom policies can require file signatures based on LSM labels. These
files are normally created and only afterwards labeled, requiring them
to be signed.
Instead of requiring file signatures based on LSM labels, entire
filesystems could require file signatures. In this case, we need the
ability of writing new files without requiring file signatures.
The definition of a "new" file was originally defined as any file with
a length of zero. Subsequent patches redefined a "new" file to be based
on the FILE_CREATE open flag. By combining the open flag with a file
size of zero, this patch relaxes the file signature requirement.
Fixes: 1ac202e978e1 ima: accept previously set IMA_NEW_FILE
Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-rw-r--r-- | security/integrity/ima/ima_appraise.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/security/integrity/ima/ima_appraise.c b/security/integrity/ima/ima_appraise.c index 28aee9eb8b32..141b8a723d1b 100644 --- a/security/integrity/ima/ima_appraise.c +++ b/security/integrity/ima/ima_appraise.c @@ -198,7 +198,8 @@ int ima_appraise_measurement(int func, struct integrity_iint_cache *iint, if (opened & FILE_CREATED) iint->flags |= IMA_NEW_FILE; if ((iint->flags & IMA_NEW_FILE) && - !(iint->flags & IMA_DIGSIG_REQUIRED)) + (!(iint->flags & IMA_DIGSIG_REQUIRED) || + (inode->i_size == 0))) status = INTEGRITY_PASS; goto out; } |