From a2f5d438a6ed5792611ff5d34a4a0e82670a21ea Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Wed, 27 Nov 2013 10:59:53 +0200 Subject: [PATCH] core: Fix protecting from agent callback freeing the agent --- src/agent.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/agent.c b/src/agent.c index 7880ba6a0..bcba969f4 100644 --- a/src/agent.c +++ b/src/agent.c @@ -319,6 +319,9 @@ static void simple_agent_reply(DBusPendingCall *call, void *user_data) * is only called after a reply has been received */ message = dbus_pending_call_steal_reply(call); + /* Protect from the callback freeing the agent */ + agent_ref(agent); + dbus_error_init(&err); if (dbus_set_error_from_message(&err, message)) { DBG("agent error reply: %s, %s", err.name, err.message); @@ -330,6 +333,7 @@ static void simple_agent_reply(DBusPendingCall *call, void *user_data) agent_cancel(agent); dbus_message_unref(message); dbus_error_free(&err); + agent_unref(agent); return; } @@ -350,6 +354,7 @@ done: agent->request = NULL; agent_request_free(req, TRUE); + agent_unref(agent); } static int agent_call_authorize_service(struct agent_request *req, -- 2.47.3