aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorStephen Smalley <sds@tycho.nsa.gov>2015-02-24 00:39:49 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-02-24 00:39:49 +0000
commitafc841af8d04c2710d167b5e182129cf3bc29e2b (patch)
treef0efe9b83d90d9511710826c7b074c5054626067 /tools
parent29d2a05b78dcdd596e80faa0d8192d06855cbd72 (diff)
parent534fb0711d95615a77af23ffe643e8b720a527e6 (diff)
downloadandroid_external_sepolicy-afc841af8d04c2710d167b5e182129cf3bc29e2b.tar.gz
android_external_sepolicy-afc841af8d04c2710d167b5e182129cf3bc29e2b.tar.bz2
android_external_sepolicy-afc841af8d04c2710d167b5e182129cf3bc29e2b.zip
am 534fb071: checkseapp: Detect duplicate keys in seapp_contexts entries.
* commit '534fb0711d95615a77af23ffe643e8b720a527e6': checkseapp: Detect duplicate keys in seapp_contexts entries.
Diffstat (limited to 'tools')
-rw-r--r--tools/check_seapp.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/tools/check_seapp.c b/tools/check_seapp.c
index 90fa0a4..c487331 100644
--- a/tools/check_seapp.c
+++ b/tools/check_seapp.c
@@ -524,6 +524,10 @@ static rule_map *rule_map_new(kvp keys[], size_t num_of_keys, int lineno) {
rule_map *new_map = NULL;
kvp *k = NULL;
key_map *r = NULL, *x = NULL;
+ bool seen[KVP_NUM_OF_RULES];
+
+ for (i = 0; i < KVP_NUM_OF_RULES; i++)
+ seen[i] = false;
new_map = calloc(1, (num_of_keys * sizeof(key_map)) + sizeof(rule_map));
if (!new_map)
@@ -549,6 +553,12 @@ static rule_map *rule_map_new(kvp keys[], size_t num_of_keys, int lineno) {
continue;
}
+ if (seen[j]) {
+ log_error("Duplicated key: %s\n", k->key);
+ goto err;
+ }
+ seen[j] = true;
+
memcpy(r, x, sizeof(key_map));
/* Assign rule map value to one from file */
@@ -612,7 +622,7 @@ err:
free_kvp(k);
}
}
- exit(EXIT_FAILURE);
+ return NULL;
}
/**
@@ -936,6 +946,8 @@ static void parse() {
} /*End token parsing */
rule_map *r = rule_map_new(keys, token_cnt, lineno);
+ if (!r)
+ goto err;
rule_add(r);
} /* End file parsing */