aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--security/integrity/ima/ima_policy.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/security/integrity/ima/ima_policy.c b/security/integrity/ima/ima_policy.c
index 03cbba423e59..8bbc18eb07eb 100644
--- a/security/integrity/ima/ima_policy.c
+++ b/security/integrity/ima/ima_policy.c
@@ -440,6 +440,17 @@ void ima_update_policy_flag(void)
440 ima_policy_flag &= ~IMA_APPRAISE; 440 ima_policy_flag &= ~IMA_APPRAISE;
441} 441}
442 442
443static int ima_appraise_flag(enum ima_hooks func)
444{
445 if (func == MODULE_CHECK)
446 return IMA_APPRAISE_MODULES;
447 else if (func == FIRMWARE_CHECK)
448 return IMA_APPRAISE_FIRMWARE;
449 else if (func == POLICY_CHECK)
450 return IMA_APPRAISE_POLICY;
451 return 0;
452}
453
443/** 454/**
444 * ima_init_policy - initialize the default measure rules. 455 * ima_init_policy - initialize the default measure rules.
445 * 456 *
@@ -478,9 +489,11 @@ void __init ima_init_policy(void)
478 * Insert the appraise rules requiring file signatures, prior to 489 * Insert the appraise rules requiring file signatures, prior to
479 * any other appraise rules. 490 * any other appraise rules.
480 */ 491 */
481 for (i = 0; i < secure_boot_entries; i++) 492 for (i = 0; i < secure_boot_entries; i++) {
482 list_add_tail(&secure_boot_rules[i].list, 493 list_add_tail(&secure_boot_rules[i].list, &ima_default_rules);
483 &ima_default_rules); 494 temp_ima_appraise |=
495 ima_appraise_flag(secure_boot_rules[i].func);
496 }
484 497
485 for (i = 0; i < appraise_entries; i++) { 498 for (i = 0; i < appraise_entries; i++) {
486 list_add_tail(&default_appraise_rules[i].list, 499 list_add_tail(&default_appraise_rules[i].list,
@@ -934,12 +947,9 @@ static int ima_parse_rule(char *rule, struct ima_rule_entry *entry)
934 } 947 }
935 if (!result && (entry->action == UNKNOWN)) 948 if (!result && (entry->action == UNKNOWN))
936 result = -EINVAL; 949 result = -EINVAL;
937 else if (entry->func == MODULE_CHECK) 950 else if (entry->action == APPRAISE)
938 temp_ima_appraise |= IMA_APPRAISE_MODULES; 951 temp_ima_appraise |= ima_appraise_flag(entry->func);
939 else if (entry->func == FIRMWARE_CHECK) 952
940 temp_ima_appraise |= IMA_APPRAISE_FIRMWARE;
941 else if (entry->func == POLICY_CHECK)
942 temp_ima_appraise |= IMA_APPRAISE_POLICY;
943 audit_log_format(ab, "res=%d", !result); 953 audit_log_format(ab, "res=%d", !result);
944 audit_log_end(ab); 954 audit_log_end(ab);
945 return result; 955 return result;