|
@@ -319,9 +319,12 @@ int evm_inode_setxattr(struct dentry *dentry, const char *xattr_name,
|
|
|
{
|
|
|
const struct evm_ima_xattr_data *xattr_data = xattr_value;
|
|
|
|
|
|
- if ((strcmp(xattr_name, XATTR_NAME_EVM) == 0)
|
|
|
- && (xattr_data->type == EVM_XATTR_HMAC))
|
|
|
- return -EPERM;
|
|
|
+ if (strcmp(xattr_name, XATTR_NAME_EVM) == 0) {
|
|
|
+ if (!xattr_value_len)
|
|
|
+ return -EINVAL;
|
|
|
+ if (xattr_data->type != EVM_IMA_XATTR_DIGSIG)
|
|
|
+ return -EPERM;
|
|
|
+ }
|
|
|
return evm_protect_xattr(dentry, xattr_name, xattr_value,
|
|
|
xattr_value_len);
|
|
|
}
|