From 38641bf56cb1e060be05bcc5e7ac1dfd9656aa8e Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Tue, 13 Jul 2021 10:16:49 +0900 Subject: [PATCH] Fix use of v variable after it was freed The v is freed by eldbus_service_interface_unregister() Change-Id: I035a976a2f3d851ac0c3292a2b8975855b57e9f1 --- src/service/DBus.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/service/DBus.cpp b/src/service/DBus.cpp index 0720693..2a8e343 100644 --- a/src/service/DBus.cpp +++ b/src/service/DBus.cpp @@ -677,9 +677,11 @@ struct DefaultDBusWrapper : public DBusWrapper DBUS_DEBUG("registering interface %p (%d)", v, fallback ? 1 : 0); destructors.push_back([=]() { DBUS_DEBUG("unregistering interface %p", v); + { + std::lock_guard lock(globalEntriesMutex); + globalEntries.erase(v); + } eldbus_service_interface_unregister(v); - std::lock_guard lock(globalEntriesMutex); - globalEntries.erase(v); }); } } @@ -776,4 +778,4 @@ OwnerNameCallbackHandle DBus::registerNameOwnerChangedCallback(DBusWrapper::Conn }; } return o; -} \ No newline at end of file +} -- 2.34.1