1 From 28077faa11827e1ca7a7245ffd62ee78091b6bd2 Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?Jos=C3=A9=20Bollo?= <jose.bollo@iot.bzh>
3 Date: Fri, 16 Aug 2019 13:29:23 +0200
4 Subject: [PATCH 6/8] Fix SIGSEGV on disconnections
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
9 Sometime, at start of the system, dbus-daemon was crashing
10 because a pending authorisation were reactivating a closed
13 Also, clean unused function.
15 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
19 bus/connection.c | 14 +++-----------
20 bus/connection.h | 3 ---
21 4 files changed, 9 insertions(+), 14 deletions(-)
23 diff --git a/bus/check.c b/bus/check.c
24 index f3d283f..b73d08b 100644
27 @@ -617,3 +617,8 @@ bus_deferred_message_response_received (BusDeferredMessage *deferred_message,
32 +bus_deferred_message_abort (BusDeferredMessage *deferred_message)
34 + deferred_message->response_callback = NULL;
36 diff --git a/bus/check.h b/bus/check.h
37 index 9c13c18..d718a69 100644
40 @@ -93,6 +93,7 @@ void bus_deferred_message_set_policy_check_info (BusDeferredMessa
41 const char *privilege);
42 dbus_bool_t bus_deferred_message_check_message_limits (BusDeferredMessage *deferred_message,
44 +void bus_deferred_message_abort (BusDeferredMessage *deferred_message);
47 #ifdef DBUS_ENABLE_EMBEDDED_TESTS
48 diff --git a/bus/connection.c b/bus/connection.c
49 index ee93384..b520d57 100644
50 --- a/bus/connection.c
51 +++ b/bus/connection.c
53 #define MAX_LOG_COMMAND_LEN 50
55 static void bus_connection_remove_transactions (DBusConnection *connection);
56 +static void bus_connection_clear_deferred_messages (DBusConnection *connection);
60 @@ -2821,17 +2822,7 @@ bus_connection_pop_deferred_message (DBusConnection *connection)
65 -bus_connection_putback_deferred_message (DBusConnection *connection, BusDeferredMessage *message)
67 - BusConnectionData *d = BUS_CONNECTION_DATA(connection);
68 - if (_dbus_list_prepend(&d->deferred_messages, message))
77 bus_connection_clear_deferred_messages (DBusConnection *connection)
79 @@ -2846,6 +2837,7 @@ bus_connection_clear_deferred_messages (DBusConnection *connection)
80 next = _dbus_list_get_next_link (&d->deferred_messages, link);
83 + bus_deferred_message_abort(message);
84 bus_deferred_message_unref(message);
85 _dbus_list_remove_link(&d->deferred_messages, link);
87 diff --git a/bus/connection.h b/bus/connection.h
88 index 97dae96..6af7bf1 100644
89 --- a/bus/connection.h
90 +++ b/bus/connection.h
91 @@ -90,15 +90,12 @@ dbus_bool_t bus_connection_queue_deferred_message (DBusConnection *con
92 BusDeferredMessage *message,
94 BusDeferredMessage *bus_connection_pop_deferred_message (DBusConnection *connection);
95 -dbus_bool_t bus_connection_putback_deferred_message (DBusConnection *connection,
96 - BusDeferredMessage *message);
97 void bus_connection_remove_deferred_message (DBusConnection *connection,
98 BusDeferredMessage *message);
99 dbus_bool_t bus_connection_replace_deferred_message (DBusConnection *connection,
100 BusDeferredMessage *oldMessage,
101 BusDeferredMessage *newMessage);
102 void bus_connection_dispatch_deferred (DBusConnection *connection);
103 -void bus_connection_clear_deferred_messages (DBusConnection *connection);
106 /* called by signals.c */