aboutsummaryrefslogtreecommitdiff
path: root/src/mm-plugin-base.c
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2011-08-02 16:54:47 -0500
committerDan Williams <dcbw@redhat.com>2011-08-02 21:56:56 -0500
commiteb2d14ab4a72d437d7fceb1bdddd1417be17c5c8 (patch)
treea891d51ea9e26f8732397ac2768a54fa15cbb19e /src/mm-plugin-base.c
parent804cd7f07710362a6454fbf2cee689492b3060d4 (diff)
core: fix possible double-free
If there was data waiting, the task freed it, but then the port got closed, and the data callback might have freed the data again.
Diffstat (limited to 'src/mm-plugin-base.c')
-rw-r--r--src/mm-plugin-base.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/mm-plugin-base.c b/src/mm-plugin-base.c
index 810d9e56..6c5658c4 100644
--- a/src/mm-plugin-base.c
+++ b/src/mm-plugin-base.c
@@ -370,8 +370,6 @@ supports_task_dispose (GObject *object)
g_object_unref (priv->port);
g_free (priv->physdev_path);
g_free (priv->driver);
- g_free (priv->probe_resp);
- g_clear_error (&(priv->probe_error));
for (iter = priv->custom; iter; iter = g_slist_next (iter)) {
CustomInit *custom = iter->data;
@@ -399,6 +397,8 @@ supports_task_dispose (GObject *object)
g_free (priv->probed_vendor);
g_free (priv->probed_product);
+ g_free (priv->probe_resp);
+ g_clear_error (&(priv->probe_error));
G_OBJECT_CLASS (mm_plugin_base_supports_task_parent_class)->dispose (object);
}