]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
dbus: Do not deinitialize new D-Bus API if it is not initialized
authorJouni Malinen <j@w1.fi>
Thu, 31 Dec 2009 19:50:12 +0000 (21:50 +0200)
committerJouni Malinen <j@w1.fi>
Thu, 31 Dec 2009 19:50:12 +0000 (21:50 +0200)
This fixes a crash on error path when D-Bus initialization fails.

wpa_supplicant/dbus/dbus_common_i.h
wpa_supplicant/dbus/dbus_new.c

index 2db8421c733f10291c1ec0a6511210aa47e013cd..9dab1ee7278272140e23fdbdba2e66947f216a6e 100644 (file)
@@ -24,6 +24,7 @@ struct wpas_dbus_priv {
        int should_dispatch;
        struct wpa_global *global;
        u32 next_objid;
+       int dbus_new_initialized;
 };
 
 #endif /* DBUS_COMMON_I_H */
index 8c5b01b98aa0821e54dd39c04693c19ff4ed4116..3817e6e26ace481b8627877e4a593a1a73ea6b91 100644 (file)
@@ -1070,6 +1070,8 @@ int wpas_dbus_ctrl_iface_init(struct wpas_dbus_priv *priv)
                                       obj_desc);
        if (ret < 0)
                free_dbus_object_desc(obj_desc);
+       else
+               priv->dbus_new_initialized = 1;
 
        return ret;
 }
@@ -1085,6 +1087,8 @@ int wpas_dbus_ctrl_iface_init(struct wpas_dbus_priv *priv)
  */
 void wpas_dbus_ctrl_iface_deinit(struct wpas_dbus_priv *iface)
 {
+       if (!iface->dbus_new_initialized)
+               return;
        wpa_printf(MSG_DEBUG, "dbus: Unregister D-Bus object '%s'",
                   WPAS_DBUS_NEW_PATH);
        dbus_connection_unregister_object_path(iface->con,