diff --git a/parser/features.c b/parser/features.c index 2b8156424..07d6e6ca7 100644 --- a/parser/features.c +++ b/parser/features.c @@ -286,3 +286,16 @@ const char *aa_features_get_string(aa_features *features) { return features->string; } + +/** + * aa_features_is_equal - equality test for two features + * @features1: the first features (can be NULL) + * @features2: the second features (can be NULL) + * + * Returns: true if they're equal, false if they're not or either are NULL + */ +bool aa_features_is_equal(aa_features *features1, aa_features *features2) +{ + return features1 && features2 && + strcmp(features1->string, features2->string) == 0; +} diff --git a/parser/features.h b/parser/features.h index 100f4603f..a0c177f16 100644 --- a/parser/features.h +++ b/parser/features.h @@ -28,5 +28,6 @@ int aa_features_new_from_kernel(aa_features **features); aa_features *aa_features_ref(aa_features *features); void aa_features_unref(aa_features *features); const char *aa_features_get_string(aa_features *features); +bool aa_features_is_equal(aa_features *features1, aa_features *features2); #endif /* __AA_FEATURES_H */ diff --git a/parser/policy_cache.c b/parser/policy_cache.c index 8d34f34d1..27c83c1dc 100644 --- a/parser/policy_cache.c +++ b/parser/policy_cache.c @@ -252,10 +252,7 @@ int setup_cache(aa_features *kernel_features, const char *cacheloc) kernel_features_string = aa_features_get_string(kernel_features); if (!aa_features_new(&cache_features, cache_features_path)) { - const char *cache_features_string; - - cache_features_string = aa_features_get_string(cache_features); - if (strcmp(kernel_features_string, cache_features_string) != 0) { + if (!aa_features_is_equal(kernel_features, cache_features)) { if (write_cache && cond_clear_cache) { if (create_cache(cacheloc, cache_features_path, kernel_features_string))