summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-08-25 16:26:26 +0200
committerThomas Haller <thaller@redhat.com>2015-08-25 16:37:44 +0200
commit13386f760ac46564c363ea690d517d941fd1686e (patch)
treedac7e1ca5f5836e8079a74c97b210fa16490b857
parent9b35d29d06e401deab2cd073ed3b93198beb3a6e (diff)
downloadNetworkManager-13386f760ac46564c363ea690d517d941fd1686e.tar.gz
agent-manager: fix leak of secret-agent
-rw-r--r--src/settings/nm-agent-manager.c11
1 files 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);
}
}