From b1b0bf390363fa36aff1bc09443ff751943b9c34 Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Tue, 5 Mar 2019 02:53:56 +0100 Subject: client: Plug memory leaks in update_client_info() plist_get_string_val() was used to get the string values of the respective nodes, however those strings were never freed. Improved by simply copying the nodes instead. --- src/client.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/client.c b/src/client.c index 3472e6e..85d0c8b 100644 --- a/src/client.c +++ b/src/client.c @@ -579,35 +579,26 @@ static char* plist_dict_get_string_val(plist_t dict, const char* key) static void update_client_info(struct mux_client *client, plist_t dict) { plist_t node = NULL; - char *strval = NULL; - uint64_t u64val = 0; plist_t info = plist_new_dict(); node = plist_dict_get_item(dict, "BundleID"); if (node && (plist_get_node_type(node) == PLIST_STRING)) { - plist_get_string_val(node, &strval); - plist_dict_set_item(info, "BundleID", plist_new_string(strval)); + plist_dict_set_item(info, "BundleID", plist_copy(node)); } - strval = NULL; node = plist_dict_get_item(dict, "ClientVersionString"); if (node && (plist_get_node_type(node) == PLIST_STRING)) { - plist_get_string_val(node, &strval); - plist_dict_set_item(info, "ClientVersionString", plist_new_string(strval)); + plist_dict_set_item(info, "ClientVersionString", plist_copy(node)); } - strval = NULL; node = plist_dict_get_item(dict, "ProgName"); if (node && (plist_get_node_type(node) == PLIST_STRING)) { - plist_get_string_val(node, &strval); - plist_dict_set_item(info, "ProgName", plist_new_string(strval)); + plist_dict_set_item(info, "ProgName", plist_copy(node)); } - u64val = 0; node = plist_dict_get_item(dict, "kLibUSBMuxVersion"); if (node && (plist_get_node_type(node) == PLIST_UINT)) { - plist_get_uint_val(node, &u64val); - plist_dict_set_item(info, "kLibUSBMuxVersion", plist_new_uint(u64val)); + plist_dict_set_item(info, "kLibUSBMuxVersion", plist_copy(node)); } plist_free(client->info); client->info = info; -- cgit v1.1-32-gdbae