[apparmor] [PATCH v2 20/42] parser: Add features comparison function
Tyler Hicks
tyhicks at canonical.com
Fri Mar 6 21:48:36 UTC 2015
This is a simple aa_features equality test. Placing it behind a function
call allows us to do something more complex than a simple string
comparison later.
Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
---
parser/features.c | 13 +++++++++++++
parser/features.h | 1 +
parser/policy_cache.c | 5 +----
3 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/parser/features.c b/parser/features.c
index 2b81564..07d6e6c 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 100f460..a0c177f 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 8d34f34..27c83c1 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))
--
2.1.4
More information about the AppArmor
mailing list