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;
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);
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);
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);