Commit 16f45a04 authored by Nikias Bassen's avatar Nikias Bassen

xplist: Plug memory leak when converting PLIST_UID nodes to XML

In node_to_xml nodes of type PLIST_UID are temporarily converted
to a PLIST_DICT for an appropriate XML output. Therefore a PLIST_KEY
and a PLIST_UINT node is created and inserted into the PLIST_DICT
node. Upon completion, the child nodes of the PLIST_DICT node are
detached from the original node and freed, however the data of the
child nodes - the key string and the uint value - are not.
This commit fixes it.
parent 02bd8acd
......@@ -91,7 +91,7 @@ plist_data_t plist_new_plist_data(void)
return data;
}
static void plist_free_data(plist_data_t data)
void plist_free_data(plist_data_t data)
{
if (data)
{
......
......@@ -67,6 +67,7 @@ typedef struct plist_data_s *plist_data_t;
plist_t plist_new_node(plist_data_t data);
plist_data_t plist_get_data(const plist_t node);
plist_data_t plist_new_plist_data(void);
void plist_free_data(plist_data_t data);
int plist_data_compare(const void *a, const void *b);
......
......@@ -337,6 +337,7 @@ static void node_to_xml(node_t* node, void *xml_struct)
for (j = num; j > 0; j--) {
node_t* ch = node_nth_child(node, j-1);
node_detach(node, ch);
plist_free_data((plist_data_t)((node_t*)ch)->data);
node_destroy(ch);
}
node_data->type = PLIST_UID;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment