adapter: Fix accessing NULL adv_manager 72/204972/1
authorSzymon Janc <szymon.janc@codecoup.pl>
Fri, 20 Apr 2018 10:45:05 +0000 (12:45 +0200)
committerAmit Purwar <amit.purwar@samsung.com>
Mon, 29 Apr 2019 04:02:35 +0000 (09:32 +0530)
adv_manager might be NULL also if BR/EDR only mdoe is set in main.conf
or if btd_adv_manager_new failed so checking for LE in supported
settings is not enough. This also makes btd_adv_manager_refresh
consistent with other adv_manager API regarding passing NULL manager
as function parameter.

Change-Id: I5130015896a413de89150d2e669f473e3526c6aa
Signed-off-by: Amit Purwar <amit.purwar@samsung.com>
src/adapter.c
src/advertising.c

index 59ce374..dea5f67 100644 (file)
@@ -924,8 +924,7 @@ static void settings_changed(struct btd_adapter *adapter, uint32_t settings)
                g_dbus_emit_property_changed(dbus_conn, adapter->path,
                                        ADAPTER_INTERFACE, "Discoverable");
                store_adapter_info(adapter);
-               if (adapter->supported_settings & MGMT_SETTING_LE)
-                       btd_adv_manager_refresh(adapter->adv_manager);
+               btd_adv_manager_refresh(adapter->adv_manager);
        }
 
        if (changed_mask & MGMT_SETTING_BONDABLE) {
index 2e37fde..53fc89e 100644 (file)
@@ -1174,6 +1174,9 @@ void btd_adv_manager_destroy(struct btd_adv_manager *manager)
 
 void btd_adv_manager_refresh(struct btd_adv_manager *manager)
 {
+       if (!manager)
+               return;
+
        queue_foreach(manager->clients, (queue_foreach_func_t)refresh_adv,
                                                                        NULL);
 }