Re: [PATCH 3/3] IMA: add support to measure duplicate buffer for critical data hook

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





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:

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?

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

  			audit_cause = "hash_exists";
  			result = -EEXIST;
  			goto out;

thanks,

Mimi




[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux