summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElliott Sales de Andrade <qulogic@pidgin.im>2019-03-12 21:33:29 -0400
committerElliott Sales de Andrade <qulogic@pidgin.im>2019-03-12 21:33:29 -0400
commit9b2ccfc4b1a014098470405f75edd1fc70ee0b90 (patch)
tree99f4cecbf7685ba5a06ea8d6c349780f1662ce05
parent47512cd35c27a91b973f39efb778c023aa4a2857 (diff)
downloadpidgin-9b2ccfc4b1a014098470405f75edd1fc70ee0b90.tar.gz
Fix some leaks in libpurple.
-rw-r--r--libpurple/keyring.c6
-rw-r--r--libpurple/plugins/offlinemsg.c5
-rw-r--r--libpurple/protocols/novell/nmfield.c2
-rw-r--r--libpurple/protocols/zephyr/zephyr.c6
-rw-r--r--libpurple/proxy.c38
-rw-r--r--libpurple/stun.c5
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;
}
}