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:26:26 +0200
commit099b2ca0c670a1ac7cf2c18b828a752d2af9e89d (patch)
tree4df5888674a6eb96dd2e323ea80ccb7719b9b5c1
parent0432d337f6893b91e702b5142a26ea3fc8209d80 (diff)
downloadNetworkManager-th/secret-agent-rh1253407.tar.gz
agent-manager: fix leak of secret-agentth/secret-agent-rh1253407
-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);
}
}