diff options
author | Stephen Smalley <sds@tycho.nsa.gov> | 2015-02-24 00:39:49 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-02-24 00:39:49 +0000 |
commit | afc841af8d04c2710d167b5e182129cf3bc29e2b (patch) | |
tree | f0efe9b83d90d9511710826c7b074c5054626067 /tools | |
parent | 29d2a05b78dcdd596e80faa0d8192d06855cbd72 (diff) | |
parent | 534fb0711d95615a77af23ffe643e8b720a527e6 (diff) | |
download | android_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.c | 14 |
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 */ |