From 2e67a01ba65ee3ac2a028dab2d636227616673ef Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Tue, 4 Sep 2018 16:37:04 +0200 Subject: xplist: Assert when number of child nodes of PLIST_DICT is not even This should only happen due to misuse of the library, e.g. when calling plist_free() on a node that is a value node in a PLIST_DICT without properly removing the dictionary entry (key/value pair) and then calling plist_to_xml() on that dictionary. --- src/xplist.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/xplist.c b/src/xplist.c index 44bb5e7..6e64427 100644 --- a/src/xplist.c +++ b/src/xplist.c @@ -353,6 +353,9 @@ static void node_to_xml(node_t* node, bytearray_t **outbuf, uint32_t depth) str_buf_append(*outbuf, "\n", 1); if (isStruct) { + if (node_data->type == PLIST_DICT) { + assert((node->children->count % 2) == 0); + } node_iterator_t *ni = node_iterator_create(node->children); node_t *ch; while ((ch = node_iterator_next(ni))) { -- cgit v1.1-32-gdbae