Re: [PATCH 3/3] IMA: add support to measure duplicate buffer for critical data hook
From: Tushar Sugandhi <hidden>
Date: 2021-02-09 21:21:44
Also in:
dm-devel, linux-integrity, lkml, selinux
On 2021-02-08 12:24 p.m., Mimi Zohar wrote:
Hi Tushar, On Fri, 2021-01-29 at 16:45 -0800, Tushar Sugandhi wrote:quoted
diff --git a/security/integrity/ima/ima_queue.c b/security/integrity/ima/ima_queue.c index c096ef8945c7..fbf359495fa8 100644 --- a/security/integrity/ima/ima_queue.c +++ b/security/integrity/ima/ima_queue.c@@ -158,7 +158,7 @@ static int ima_pcr_extend(struct tpm_digest *digests_arg, int pcr) */ int ima_add_template_entry(struct ima_template_entry *entry, int violation, const char *op, struct inode *inode, - const unsigned char *filename) + const unsigned char *filename, bool allow_dup) { u8 *digest = entry->digests[ima_hash_algo_idx].digest;struct tpm_digestate_entry(struct ima_template_entry *entry, int violation,
Not sure I understand this. Maybe a typo? Could you please explain?
quoted
mutex_lock(&ima_extend_list_mutex); if (!violation) { - if (ima_lookup_digest_entry(digest, entry->pcr)) { + if (!allow_dup && + ima_lookup_digest_entry(digest, entry->pcr)) {Can't this change be simplified to "if (!violation && !allow_dup)"?
Sure. Will do. Earlier I wasn't sure if 'violation' would touch any other use-cases inadvertently. That's why I localized the change as above. But now since we are supporting other scenarios as well, I believe "if (!violation && !allow_dup)" would be cleaner.
Also perhaps instead of passing another variable "allow_dup" to each of these functions, pass a mask containing violation and allow_dup.
There were examples of both approaches in ima_match_policy(). - int *pcr/ima_template_desc **template_desc as an out-param; - and various actions as flags in return int. Earlier I couldn't decide one way or the other, so I picked the out-param approach. But since allow_dup is just a single bit info, returning it as a bit in the action flag is a cleaner solution. Will implement it with flag in the next iteration. Thanks again for reviewing the series. Really appreciate it. Thanks, Tushar
quoted
audit_cause = "hash_exists"; result = -EEXIST; goto out;thanks, Mimi