diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2015-02-18 18:12:34 +0100 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2015-02-18 18:12:34 +0100 |
commit | 148a6656b8da09779d2da2b59e2d6a9c392b5eb1 (patch) | |
tree | c770d36940b876fa6bec5fb11532c394d3477bb9 | |
parent | 5df024f57afe1cbc2a31e10bcb3b6e92bbc33104 (diff) | |
parent | be6ce67213066c9348d60894cb59546d74407096 (diff) | |
download | NetworkManager-148a6656b8da09779d2da2b59e2d6a9c392b5eb1.tar.gz |
merge: fix errors found with valgrind
A handful of memory leaks and one read-after-free().
-rw-r--r-- | configure.ac | 6 | ||||
-rw-r--r-- | src/dhcp-manager/nm-dhcp-client.c | 2 | ||||
-rw-r--r-- | src/nm-auth-utils.c | 5 | ||||
-rw-r--r-- | src/nm-connectivity.c | 2 | ||||
-rw-r--r-- | src/nm-manager.c | 1 | ||||
-rw-r--r-- | src/platform/nm-linux-platform.c | 2 | ||||
-rw-r--r-- | src/rdisc/nm-lndp-rdisc.c | 1 | ||||
-rw-r--r-- | src/settings/nm-agent-manager.c | 9 | ||||
-rw-r--r-- | src/settings/nm-settings-connection.c | 2 |
9 files changed, 20 insertions, 10 deletions
diff --git a/configure.ac b/configure.ac index 883a2e2977..a6780114a5 100644 --- a/configure.ac +++ b/configure.ac @@ -873,13 +873,13 @@ VAPIGEN_CHECK(0.17.1.24) # Tests, utilities and documentation AC_ARG_ENABLE(tests, AS_HELP_STRING([--enable-tests=root|yes|no], [Build NetworkManager tests (default: yes)])) -AC_ARG_WITH(valgrind, AS_HELP_STRING([--with-valgrind=yes|no|path], [Use valgrind to memory-check the tests (default: yes)])) +AC_ARG_WITH(valgrind, AS_HELP_STRING([--with-valgrind=yes|no|path], [Use valgrind to memory-check the tests (default: no)])) # Fallback to --with-tests AC_ARG_WITH(tests, AS_HELP_STRING([--with-tests], [Build NetworkManager tests (deprecated)])) AS_IF([test -n "$with_tests"], enable_tests="$with_tests") -# Default to --enable-tests --with-valgrind +# Default to --enable-tests --with-valgrind=no AS_IF([test -z "$enable_tests"], enable_tests="yes") -AS_IF([test -z "$with_valgrind"], with_valgrind="yes") +AS_IF([test -z "$with_valgrind"], with_valgrind="no") # Normalize values AS_IF([test "$enable_tests" != "yes" -a "$enable_tests" != "root"], enable_tests="no") # Search for tools diff --git a/src/dhcp-manager/nm-dhcp-client.c b/src/dhcp-manager/nm-dhcp-client.c index 951674953a..a39ffcca0d 100644 --- a/src/dhcp-manager/nm-dhcp-client.c +++ b/src/dhcp-manager/nm-dhcp-client.c @@ -884,6 +884,8 @@ dispose (GObject *object) timeout_cleanup (self); g_clear_pointer (&priv->iface, g_free); + g_clear_pointer (&priv->hostname, g_free); + g_clear_pointer (&priv->uuid, g_free); if (priv->hwaddr) { g_byte_array_free (priv->hwaddr, TRUE); diff --git a/src/nm-auth-utils.c b/src/nm-auth-utils.c index 12924e7894..1e14c7babf 100644 --- a/src/nm-auth-utils.c +++ b/src/nm-auth-utils.c @@ -158,17 +158,18 @@ nm_auth_chain_steal_data (NMAuthChain *self, const char *tag) { ChainData *tmp; gpointer value = NULL; + void *orig_key; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (tag != NULL, NULL); - tmp = g_hash_table_lookup (self->data, tag); - if (tmp) { + if (g_hash_table_lookup_extended (self->data, tag, &orig_key, (gpointer)&tmp)) { g_hash_table_steal (self->data, tag); value = tmp->data; /* Make sure the destroy handler isn't called when freeing */ tmp->destroy = NULL; free_data (tmp); + g_free (orig_key); } return value; } diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c index 804e3935fe..34465aad03 100644 --- a/src/nm-connectivity.c +++ b/src/nm-connectivity.c @@ -186,6 +186,7 @@ nm_connectivity_check_cb (SoupSession *session, SoupMessage *msg, gpointer user_ g_simple_async_result_set_op_res_gssize (simple, new_state); g_simple_async_result_complete (simple); + g_object_unref (simple); g_free (cb_data->uri); g_free (cb_data->response); @@ -321,6 +322,7 @@ nm_connectivity_check_async (NMConnectivity *self, g_simple_async_result_set_op_res_gssize (simple, priv->state); g_simple_async_result_complete_in_idle (simple); + g_object_unref (simple); } NMConnectivityState diff --git a/src/nm-manager.c b/src/nm-manager.c index d16a912880..c6f87cb983 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -5112,6 +5112,7 @@ dispose (GObject *object) } g_clear_object (&priv->settings); + g_free (priv->state_file); g_clear_object (&priv->vpn_manager); /* Unregister property filter */ diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c index 091791f4b8..e1887e5a4b 100644 --- a/src/platform/nm-linux-platform.c +++ b/src/platform/nm-linux-platform.c @@ -1008,7 +1008,7 @@ init_link (NMPlatform *platform, NMPlatformLink *info, struct rtnl_link *rtnllin if (udev_device) { info->driver = udev_get_driver (platform, udev_device, info->ifindex); if (!info->driver) - info->driver = rtnl_link_get_type (rtnllink); + info->driver = g_intern_string (rtnl_link_get_type (rtnllink)); if (!info->driver) info->driver = ethtool_get_driver (info->name); if (!info->driver) diff --git a/src/rdisc/nm-lndp-rdisc.c b/src/rdisc/nm-lndp-rdisc.c index ff1bd33ded..922cb3dd76 100644 --- a/src/rdisc/nm-lndp-rdisc.c +++ b/src/rdisc/nm-lndp-rdisc.c @@ -720,6 +720,7 @@ dispose (GObject *object) g_clear_pointer (&priv->event_channel, g_io_channel_unref); if (priv->ndp) { + ndp_msgrcv_handler_unregister (priv->ndp, receive_ra, NDP_MSG_RA, NM_RDISC (rdisc)->ifindex, rdisc); ndp_close (priv->ndp); priv->ndp = NULL; } diff --git a/src/settings/nm-agent-manager.c b/src/settings/nm-agent-manager.c index 6228dd5adb..99602d9483 100644 --- a/src/settings/nm-agent-manager.c +++ b/src/settings/nm-agent-manager.c @@ -318,6 +318,7 @@ impl_agent_manager_register_with_capabilities (NMAgentManager *self, priv->chains = g_slist_append (priv->chains, chain); } else { + g_object_unref (agent); error = g_error_new_literal (NM_AGENT_MANAGER_ERROR, NM_AGENT_MANAGER_ERROR_FAILED, "Unable to start agent authentication."); @@ -585,11 +586,12 @@ request_next_agent (Request *req) { GError *error = NULL; + req->current_call_id = NULL; + if (req->current) + g_object_unref (req->current); + if (req->pending) { /* Send the request to the next agent */ - req->current_call_id = NULL; - if (req->current) - g_object_unref (req->current); req->current = req->pending->data; req->pending = g_slist_remove (req->pending, req->current); @@ -599,7 +601,6 @@ request_next_agent (Request *req) req->next_callback (req); } else { - req->current_call_id = NULL; req->current = NULL; /* No more secret agents are available to fulfill this secrets request */ diff --git a/src/settings/nm-settings-connection.c b/src/settings/nm-settings-connection.c index ef993c39c4..9285dfbfa5 100644 --- a/src/settings/nm-settings-connection.c +++ b/src/settings/nm-settings-connection.c @@ -2314,6 +2314,8 @@ dispose (GObject *object) } g_clear_object (&priv->agent_mgr); + g_clear_pointer (&priv->filename, g_free); + G_OBJECT_CLASS (nm_settings_connection_parent_class)->dispose (object); } |