diff --git a/client/display.c b/client/display.c index f0f3282a..103e4769 100644 --- a/client/display.c +++ b/client/display.c @@ -860,6 +860,7 @@ void display_agent_prompt_release(const char *label) if (!command_is_interactive_mode()) { rl_callback_handler_remove(); l_io_destroy(io); + io = NULL; return; } @@ -975,6 +976,7 @@ void display_exit(void) rl_callback_handler_remove(); l_io_destroy(io); + io = NULL; l_signal_remove(window_change_signal); diff --git a/src/agent.c b/src/agent.c index 0f718b87..5adee5dc 100644 --- a/src/agent.c +++ b/src/agent.c @@ -183,6 +183,8 @@ static void agent_finalize_pending(struct agent *agent, } pending = l_queue_pop_head(agent->requests); + if (!pending) + return; switch (pending->type) { case AGENT_REQUEST_TYPE_PASSPHRASE: @@ -230,6 +232,7 @@ static void request_timeout(struct l_timeout *timeout, void *user_data) struct agent *agent = user_data; l_dbus_cancel(dbus_get_bus(), agent->pending_id); + agent->pending_id = 0; send_cancel_request(agent, -ETIMEDOUT);