Commit: 2d58cc855d665d7dac89f10641766c41e924c906
Parent: 0c6ec93755a0444899010f4b35213ea4c6ccb7cc
Author: Szymon Janc <szymon.janc@codecoup.pl>
Committer: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date: 2017-12-20 14:48:53
Tree: 01500923a736479cd0fecadbf8152c3ca17a9183

gdbus: Fix crash on proxy remove If proxy was freed due to interface being removed remaining references are left with NULL client pointer. We need to cancel pending calls that require client when getting reply. This fix following crash: bluetoothd[2773]: src/gatt-database.c:proxy_removed_cb() Proxy removed - removing service: /test/app/hci0/service2 bluetoothd[2773]: src/gatt-database.c:gatt_db_service_removed() Local GATT service removed bluetoothd[2773]: src/adapter.c:adapter_service_remove() /org/bluez/hci0 bluetoothd[2773]: src/adapter.c:remove_uuid() sending remove uuid command for index 0 bluetoothd[2773]: src/sdpd-service.c:remove_record_from_server() Removing record with handle 0x10008 bluetoothd[2773]: src/gatt-database.c:client_disconnect_cb() Client disconnected ==2773== Invalid read of size 8 ==2773== at 0x485220: proxy_added (client.c:288) ==2773== by 0x485220: get_all_properties_reply (client.c:316) ==2773== by 0x515A041: ??? (in /lib/x86_64-linux-gnu/libdbus-1.so.3.14.6) ==2773== by 0x515DA60: dbus_connection_dispatch (in /lib/x86_64-linux-gnu/libdbus-1.so.3.14.6) ==2773== by 0x47F2BF: message_dispatch (mainloop.c:72) ==2773== by 0x4E84049: g_main_context_dispatch (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.2) ==2773== by 0x4E843EF: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.2) ==2773== by 0x4E84711: g_main_loop_run (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.2) ==2773== by 0x40B51F: main (main.c:770) ==2773== Address 0x88 is not stack'd, malloc'd or (recently) free'd

Diffstat

M gdbus/client.c | 6 ++++++

1 files changed, 6 insertions(+), 0 deletions(-)

View Full Diff | Patch