Fix use of v variable after it was freed 73/261173/1 accepted/tizen_6.5_unified accepted/tizen_7.0_unified accepted/tizen_7.0_unified_hotfix accepted/tizen_8.0_unified accepted/tizen_9.0_unified accepted/tizen_unified_riscv tizen_6.5 tizen_7.0 tizen_7.0_hotfix tizen_8.0 tizen_9.0 accepted/tizen/6.5/unified/20211029.015605 accepted/tizen/7.0/unified/20221110.060758 accepted/tizen/7.0/unified/hotfix/20221116.111601 accepted/tizen/8.0/unified/20231005.095711 accepted/tizen/9.0/unified/20241030.232545 accepted/tizen/unified/20210713.090215 accepted/tizen/unified/riscv/20230718.003631 submit/tizen/20210713.013126 submit/tizen_6.5/20211028.163901 tizen_6.5.m2_release tizen_7.0_m2_release tizen_8.0_m2_release tizen_9.0_m2_release
authorShinwoo Kim <cinoo.kim@samsung.com>
Tue, 13 Jul 2021 01:16:49 +0000 (10:16 +0900)
committerShinwoo Kim <cinoo.kim@samsung.com>
Tue, 13 Jul 2021 01:18:01 +0000 (10:18 +0900)
The v is freed by eldbus_service_interface_unregister()

Change-Id: I035a976a2f3d851ac0c3292a2b8975855b57e9f1

src/service/DBus.cpp

index 0720693148adf3785f02df778e605af610b0e801..2a8e3433f387bdbf1e45addde4df7f84076f615e 100644 (file)
@@ -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<std::mutex> lock(globalEntriesMutex);
+                                       globalEntries.erase(v);
+                               }
                                eldbus_service_interface_unregister(v);
-                               std::lock_guard<std::mutex> lock(globalEntriesMutex);
-                               globalEntries.erase(v);
                        });
                }
        }
@@ -776,4 +778,4 @@ OwnerNameCallbackHandle DBus::registerNameOwnerChangedCallback(DBusWrapper::Conn
                };
        }
        return o;
-}
\ No newline at end of file
+}