diff options
author | Nikias Bassen | 2019-03-05 02:53:56 +0100 |
---|---|---|
committer | Nikias Bassen | 2019-03-05 02:53:56 +0100 |
commit | b1b0bf390363fa36aff1bc09443ff751943b9c34 (patch) | |
tree | 18aaa8cc8439430a5a88ad23bcfe8f53549c7bc3 | |
parent | a236e559cd2bfcd920dc684d06b188abfd6e2c32 (diff) | |
download | usbmuxd-b1b0bf390363fa36aff1bc09443ff751943b9c34.tar.gz usbmuxd-b1b0bf390363fa36aff1bc09443ff751943b9c34.tar.bz2 |
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.
-rw-r--r-- | src/client.c | 17 |
1 files 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; |