|
@@ -87,7 +87,7 @@ out:
|
|
|
*/
|
|
|
int ima_store_template(struct ima_template_entry *entry,
|
|
|
int violation, struct inode *inode,
|
|
|
- const unsigned char *filename)
|
|
|
+ const unsigned char *filename, int pcr)
|
|
|
{
|
|
|
static const char op[] = "add_template_measure";
|
|
|
static const char audit_cause[] = "hashing_error";
|
|
@@ -114,6 +114,7 @@ int ima_store_template(struct ima_template_entry *entry,
|
|
|
}
|
|
|
memcpy(entry->digest, hash.hdr.digest, hash.hdr.length);
|
|
|
}
|
|
|
+ entry->pcr = pcr;
|
|
|
result = ima_add_template_entry(entry, violation, op, inode, filename);
|
|
|
return result;
|
|
|
}
|
|
@@ -144,7 +145,8 @@ void ima_add_violation(struct file *file, const unsigned char *filename,
|
|
|
result = -ENOMEM;
|
|
|
goto err_out;
|
|
|
}
|
|
|
- result = ima_store_template(entry, violation, inode, filename);
|
|
|
+ result = ima_store_template(entry, violation, inode,
|
|
|
+ filename, CONFIG_IMA_MEASURE_PCR_IDX);
|
|
|
if (result < 0)
|
|
|
ima_free_template_entry(entry);
|
|
|
err_out:
|
|
@@ -253,7 +255,7 @@ out:
|
|
|
void ima_store_measurement(struct integrity_iint_cache *iint,
|
|
|
struct file *file, const unsigned char *filename,
|
|
|
struct evm_ima_xattr_data *xattr_value,
|
|
|
- int xattr_len)
|
|
|
+ int xattr_len, int pcr)
|
|
|
{
|
|
|
static const char op[] = "add_template_measure";
|
|
|
static const char audit_cause[] = "ENOMEM";
|
|
@@ -274,7 +276,7 @@ void ima_store_measurement(struct integrity_iint_cache *iint,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- result = ima_store_template(entry, violation, inode, filename);
|
|
|
+ result = ima_store_template(entry, violation, inode, filename, pcr);
|
|
|
if (!result || result == -EEXIST)
|
|
|
iint->flags |= IMA_MEASURED;
|
|
|
if (result < 0)
|