diff options
author | Nikias Bassen | 2023-08-30 01:03:44 +0200 |
---|---|---|
committer | Nikias Bassen | 2023-08-30 01:03:44 +0200 |
commit | d45396aad911d496494a587bd2d3ef20c2e8a8d0 (patch) | |
tree | 0f73b93cdb03cef6353b2d9c40034fdf1d8b999e /src | |
parent | 2d8d7ef272db06783989f77ba1ed80aa0f4d2dfd (diff) | |
download | libplist-d45396aad911d496494a587bd2d3ef20c2e8a8d0.tar.gz libplist-d45396aad911d496494a587bd2d3ef20c2e8a8d0.tar.bz2 |
Prevent adding NULL items to array/dictionary nodes
Thanks to @tihmstar for pointing this out!
Diffstat (limited to 'src')
-rw-r--r-- | src/plist.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/plist.c b/src/plist.c index 19279ed..2f4990c 100644 --- a/src/plist.c +++ b/src/plist.c @@ -654,6 +654,9 @@ static void _plist_array_post_insert(plist_t node, plist_t item, long n) void plist_array_set_item(plist_t node, plist_t item, uint32_t n) { + if (!item) { + return; + } if (node && PLIST_ARRAY == plist_get_node_type(node) && n < INT_MAX) { plist_t old_item = plist_array_get_item(node, n); @@ -675,6 +678,9 @@ void plist_array_set_item(plist_t node, plist_t item, uint32_t n) void plist_array_append_item(plist_t node, plist_t item) { + if (!item) { + return; + } if (node && PLIST_ARRAY == plist_get_node_type(node)) { node_attach((node_t)node, (node_t)item); @@ -684,6 +690,9 @@ void plist_array_append_item(plist_t node, plist_t item) void plist_array_insert_item(plist_t node, plist_t item, uint32_t n) { + if (!item) { + return; + } if (node && PLIST_ARRAY == plist_get_node_type(node) && n < INT_MAX) { node_insert((node_t)node, n, (node_t)item); @@ -852,6 +861,9 @@ plist_t plist_dict_get_item(plist_t node, const char* key) void plist_dict_set_item(plist_t node, const char* key, plist_t item) { + if (!item) { + return; + } if (node && PLIST_DICT == plist_get_node_type(node)) { plist_t old_item = plist_dict_get_item(node, key); plist_t key_node = NULL; |