summaryrefslogtreecommitdiffstats
path: root/src/plist.c
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2019-05-20 01:24:15 +0200
committerGravatar Nikias Bassen2019-05-20 01:24:15 +0200
commit17546f53ac1377b0d4f45a800aaec7366ba5b6a0 (patch)
tree36b7df46cfb2d6a87c8713f4c357210fd06a10b1 /src/plist.c
parentea37ed01b8c7e05078620ed039899ddff48eac1c (diff)
downloadlibplist-17546f53ac1377b0d4f45a800aaec7366ba5b6a0.tar.gz
libplist-17546f53ac1377b0d4f45a800aaec7366ba5b6a0.tar.bz2
plist_set_key_val(): prevent setting a key value that already exists in a PLIST_DICT
Diffstat (limited to 'src/plist.c')
-rw-r--r--src/plist.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/plist.c b/src/plist.c
index 29dbfb7..6d7a07f 100644
--- a/src/plist.c
+++ b/src/plist.c
@@ -1067,6 +1067,11 @@ static void plist_set_element_val(plist_t node, plist_type type, const void *val
PLIST_API void plist_set_key_val(plist_t node, const char *val)
{
+ plist_t father = plist_get_parent(node);
+ plist_t item = plist_dict_get_item(father, val);
+ if (item) {
+ return;
+ }
plist_set_element_val(node, PLIST_KEY, val, strlen(val));
}