Merge "Add support for dlog" into tizen
[platform/upstream/connman.git] / plugins / ethernet.c
index 6702cd3..2a91e2f 100644 (file)
@@ -173,7 +173,12 @@ void handle_eap_signal(GSupplicantInterface *interface, bool status)
        if (!status) {
                // Should we mark service as non favorite or make autoconnect as false?
 
-               g_supplicant_interface_remove(interface, NULL, NULL);
+               struct ethernet_data *ethernet = g_supplicant_interface_get_data(interface);
+               if (ethernet && ethernet->interface) {
+                       g_supplicant_interface_remove(ethernet->interface, NULL, NULL);
+                       ethernet->interface = NULL;
+               }
+
                connman_network_set_error(g_network, CONNMAN_NETWORK_ERROR_ASSOCIATE_FAIL);
                g_network = NULL;
                return;
@@ -216,8 +221,10 @@ static int eth_network_connect(struct connman_network *network)
                g_supplicant_register_eap_callback(handle_eap_signal);
                g_network = network;
 
-               if (asprintf(&config_file, "/opt/usr/data/network/%s-eapol.conf", ifname) < 0)
+               if (asprintf(&config_file, "/opt/usr/data/network/%s-eapol.conf", ifname) < 0) {
+                       g_free(ifname);
                        return -ENOMEM;
+               }
 
                DBG("config_file %s", config_file);
 
@@ -253,7 +260,10 @@ static int eth_network_disconnect(struct connman_network *network)
 
                g_network = NULL;
                g_supplicant_unregister_eap_callback();
-               g_supplicant_interface_remove(ethernet->interface, NULL, NULL);
+               if (ethernet && ethernet->interface) {
+                       g_supplicant_interface_remove(ethernet->interface, NULL, NULL);
+                       ethernet->interface = NULL;
+               }
                connman_network_set_associating(network, false);
                connman_network_set_connected(network, false);
 
@@ -427,7 +437,13 @@ static void eth_dev_remove(struct connman_device *device)
        connman_device_set_data(device, NULL);
 
 #if defined TIZEN_EXT && defined TIZEN_EXT_EAP_ON_ETHERNET
-       g_supplicant_interface_remove(ethernet->interface, NULL, NULL);
+       if (!ethernet)
+              return;
+
+       if (ethernet->interface) {
+               g_supplicant_interface_remove(ethernet->interface, NULL, NULL);
+               ethernet->interface = NULL;
+       }
 #endif /* defined TIZEN_EXT && defined TIZEN_EXT_EAP_ON_ETHERNET */
 
        connman_rtnl_remove_watch(ethernet->watch);