|
@@ -145,6 +145,7 @@ static int process_measurement(struct file *file, const char *filename,
|
|
|
{
|
|
|
struct inode *inode = file_inode(file);
|
|
|
struct integrity_iint_cache *iint;
|
|
|
+ struct ima_template_desc *template_desc = ima_template_desc_current();
|
|
|
char *pathbuf = NULL;
|
|
|
const char *pathname = NULL;
|
|
|
int rc = -ENOMEM, action, must_appraise, _func;
|
|
@@ -188,7 +189,10 @@ static int process_measurement(struct file *file, const char *filename,
|
|
|
goto out_digsig;
|
|
|
}
|
|
|
|
|
|
- if (action & IMA_APPRAISE_SUBMASK)
|
|
|
+ if (strcmp(template_desc->name, IMA_TEMPLATE_IMA_NAME) == 0) {
|
|
|
+ if (action & IMA_APPRAISE_SUBMASK)
|
|
|
+ xattr_ptr = &xattr_value;
|
|
|
+ } else
|
|
|
xattr_ptr = &xattr_value;
|
|
|
|
|
|
rc = ima_collect_measurement(iint, file, xattr_ptr, &xattr_len);
|