From eb2d14ab4a72d437d7fceb1bdddd1417be17c5c8 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Tue, 2 Aug 2011 16:54:47 -0500 Subject: [PATCH] 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. --- src/mm-plugin-base.c | 4 ++-- 1 file 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); }