diff options
author | Elliott Sales de Andrade <qulogic@pidgin.im> | 2019-03-12 21:33:29 -0400 |
---|---|---|
committer | Elliott Sales de Andrade <qulogic@pidgin.im> | 2019-03-12 21:33:29 -0400 |
commit | 9b2ccfc4b1a014098470405f75edd1fc70ee0b90 (patch) | |
tree | 99f4cecbf7685ba5a06ea8d6c349780f1662ce05 | |
parent | 47512cd35c27a91b973f39efb778c023aa4a2857 (diff) | |
download | pidgin-9b2ccfc4b1a014098470405f75edd1fc70ee0b90.tar.gz |
Fix some leaks in libpurple.
-rw-r--r-- | libpurple/keyring.c | 6 | ||||
-rw-r--r-- | libpurple/plugins/offlinemsg.c | 5 | ||||
-rw-r--r-- | libpurple/protocols/novell/nmfield.c | 2 | ||||
-rw-r--r-- | libpurple/protocols/zephyr/zephyr.c | 6 | ||||
-rw-r--r-- | libpurple/proxy.c | 38 | ||||
-rw-r--r-- | libpurple/stun.c | 5 |
6 files changed, 34 insertions, 28 deletions
diff --git a/libpurple/keyring.c b/libpurple/keyring.c index 841f9b5e7e..46a23b811a 100644 --- a/libpurple/keyring.c +++ b/libpurple/keyring.c @@ -641,11 +641,15 @@ purple_keyring_drop_passwords(PurpleKeyring *keyring, save_cb = purple_keyring_get_save_password(keyring); g_assert(save_cb != NULL); + it = purple_accounts_get_all(); + if (it == NULL) + return; + tracker = g_new0(PurpleKeyringDropTracker, 1); tracker->cb = cb; tracker->cb_data = data; - for (it = purple_accounts_get_all(); it != NULL; it = it->next) { + for (; it != NULL; it = it->next) { PurpleAccount *account = it->data; tracker->drop_outstanding++; diff --git a/libpurple/plugins/offlinemsg.c b/libpurple/plugins/offlinemsg.c index f0f7788958..1088d363c6 100644 --- a/libpurple/plugins/offlinemsg.c +++ b/libpurple/plugins/offlinemsg.c @@ -173,6 +173,11 @@ sending_msg_cb(PurpleAccount *account, PurpleMessage *msg, gpointer handle) _("No"), cancel_poune); g_free(ask); } + else + { + g_warn_if_reached(); + g_free(offline); + } } static PurplePluginPrefFrame * diff --git a/libpurple/protocols/novell/nmfield.c b/libpurple/protocols/novell/nmfield.c index 3d540475a7..a94a45913a 100644 --- a/libpurple/protocols/novell/nmfield.c +++ b/libpurple/protocols/novell/nmfield.c @@ -340,8 +340,6 @@ _value_to_string(NMField * field) } } else { /* assume it is a number */ - value = g_new0(char, 20); - switch (field->type) { case NMFIELD_TYPE_BYTE: case NMFIELD_TYPE_WORD: diff --git a/libpurple/protocols/zephyr/zephyr.c b/libpurple/protocols/zephyr/zephyr.c index 96c6f5dbdb..905831a68c 100644 --- a/libpurple/protocols/zephyr/zephyr.c +++ b/libpurple/protocols/zephyr/zephyr.c @@ -942,12 +942,12 @@ static int free_parse_tree(parse_tree* tree) { for(i=0;i<tree->num_children;i++){ if (tree->children[i]) { free_parse_tree(tree->children[i]); - g_free(tree->children[i]); } } - if ((tree != &null_parse_tree) && (tree->contents != NULL)) + if (tree != &null_parse_tree) { g_free(tree->contents); - + g_free(tree); + } } return 0; } diff --git a/libpurple/proxy.c b/libpurple/proxy.c index ae9908c8b8..656c05c9fd 100644 --- a/libpurple/proxy.c +++ b/libpurple/proxy.c @@ -785,15 +785,6 @@ purple_proxy_connect(void *handle, PurpleAccount *account, g_return_val_if_fail(port > 0, NULL); g_return_val_if_fail(connect_cb != NULL, NULL); - connect_data = g_new0(PurpleProxyConnectData, 1); - connect_data->fd = -1; - connect_data->handle = handle; - connect_data->connect_cb = connect_cb; - connect_data->data = data; - connect_data->host = g_strdup(host); - connect_data->port = port; - connect_data->gpi = purple_proxy_get_setup(account); - client = purple_gio_socket_client_new(account, &error); if (client == NULL) { @@ -802,11 +793,17 @@ purple_proxy_connect(void *handle, PurpleAccount *account, error->message, purple_request_cpar_from_account(account)); g_clear_error(&error); - - purple_proxy_connect_data_destroy(connect_data); return NULL; } + connect_data = g_new0(PurpleProxyConnectData, 1); + connect_data->fd = -1; + connect_data->handle = handle; + connect_data->connect_cb = connect_cb; + connect_data->data = data; + connect_data->host = g_strdup(host); + connect_data->port = port; + connect_data->gpi = purple_proxy_get_setup(account); connect_data->cancellable = g_cancellable_new(); purple_debug_info("proxy", "Attempting connection to %s:%u\n", @@ -978,15 +975,6 @@ purple_proxy_connect_socks5_account(void *handle, PurpleAccount *account, g_return_val_if_fail(port >= 0, NULL); g_return_val_if_fail(connect_cb != NULL, NULL); - connect_data = g_new0(PurpleProxyConnectData, 1); - connect_data->fd = -1; - connect_data->handle = handle; - connect_data->connect_cb = connect_cb; - connect_data->data = data; - connect_data->host = g_strdup(host); - connect_data->port = port; - connect_data->gpi = gpi; - client = purple_gio_socket_client_new(account, &error); if (client == NULL) { @@ -995,11 +983,17 @@ purple_proxy_connect_socks5_account(void *handle, PurpleAccount *account, error->message, purple_request_cpar_from_account(account)); g_clear_error(&error); - - purple_proxy_connect_data_destroy(connect_data); return NULL; } + connect_data = g_new0(PurpleProxyConnectData, 1); + connect_data->fd = -1; + connect_data->handle = handle; + connect_data->connect_cb = connect_cb; + connect_data->data = data; + connect_data->host = g_strdup(host); + connect_data->port = port; + connect_data->gpi = gpi; connect_data->cancellable = g_cancellable_new(); purple_debug_info("proxy", diff --git a/libpurple/stun.c b/libpurple/stun.c index 5d3bdc1c2b..8a49cf96c1 100644 --- a/libpurple/stun.c +++ b/libpurple/stun.c @@ -271,6 +271,8 @@ hbn_listen_cb(int fd, gpointer data) { nattype.status = PURPLE_STUN_STATUS_UNKNOWN; nattype.lookup_time = time(NULL); do_callbacks(); + g_resolver_free_addresses(ld->addresses); + g_free(ld); return; } @@ -330,6 +332,7 @@ hbn_cb(GObject *sender, GAsyncResult *res, gpointer data) { do_callbacks(); + g_free(ld); return; } @@ -340,6 +343,8 @@ hbn_cb(GObject *sender, GAsyncResult *res, gpointer data) { do_callbacks(); + g_resolver_free_addresses(ld->addresses); + g_free(ld); return; } } |