From 13386f760ac46564c363ea690d517d941fd1686e Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 25 Aug 2015 16:26:26 +0200 Subject: [PATCH] agent-manager: fix leak of secret-agent --- src/settings/nm-agent-manager.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/settings/nm-agent-manager.c b/src/settings/nm-agent-manager.c index 3ed2e57916..b3f2f675b0 100644 --- a/src/settings/nm-agent-manager.c +++ b/src/settings/nm-agent-manager.c @@ -500,6 +500,9 @@ request_free (Request *req) g_object_unref (req->self); + if (req->current) + g_object_unref (req->current); + memset (req, 0, sizeof (Request)); g_free (req); } @@ -656,15 +659,19 @@ request_remove_agent (Request *req, NMSecretAgent *agent, GSList **pending_reqs) self = req->self; - req->pending = g_slist_remove (req->pending, agent); - if (agent == req->current) { + nm_assert (!g_slist_find (req->pending, agent)); + _LOGD (agent, "current agent removed from secrets request "LOG_REQ_FMT, LOG_REQ_ARG (req)); *pending_reqs = g_slist_prepend (*pending_reqs, req); } else { + req->pending = g_slist_remove (req->pending, agent); + _LOGD (agent, "agent removed from secrets request "LOG_REQ_FMT, LOG_REQ_ARG (req)); + + g_object_unref (agent); } }