Free vconf_get_str using free() instead of g_free()
[platform/core/connectivity/net-config.git] / src / wifi-power.c
index 5705b69..c34bccf 100755 (executable)
 #endif
 
 #define WLAN_MAC_INFO              tzplatform_mkpath(TZ_SYS_ETC, "/.mac.info")
+#define WLAN_MAC_ADDRESS_FILEPATH   "/sys/class/net/wlan0/address"
 #define WLAN_MAC_ADDR_MAX          20
 #define VCONF_WIFI_BSSID_ADDRESS       "db/wifi/bssid_address"
 
-#if defined TIZEN_TV
 #define ETH_MAC_ADDR_SIZE 6
 #define VCONF_ETH_MAC_ADDRESS  "db/dnet/mac_address"
 #define NET_EXEC_PATH "/sbin/ifconfig"
 #define OS_RANDOM_FILE "/dev/urandom"
-#endif
 
 static gboolean connman_wifi_technology_state = FALSE;
 static gboolean wifi_firmware_recovery_mode = FALSE;
@@ -98,7 +97,7 @@ static void __technology_reply(GObject *source_object, GAsyncResult *res, gpoint
        GDBusConnection *conn = NULL;
        GError *error = NULL;
 
-       conn = G_DBUS_CONNECTION (source_object);
+       conn = G_DBUS_CONNECTION(source_object);
        reply = g_dbus_connection_call_finish(conn, res, &error);
 
        if (reply == NULL) {
@@ -322,8 +321,12 @@ static void __netconfig_set_wifi_bssid(void)
        FILE *fp = fopen(WLAN_MAC_INFO, "r");
 
        if (fp == NULL) {
-               ERR("Fail to open file");
-               return;
+               ERR("Fail to open %s", WLAN_MAC_INFO);
+               fp = fopen(WLAN_MAC_ADDRESS_FILEPATH, "r");
+               if (fp == NULL) {
+                       ERR("Fail to open %s", WLAN_MAC_ADDRESS_FILEPATH);
+                       return;
+               }
        }
 
        fseek(fp, 0L, SEEK_SET);
@@ -365,62 +368,6 @@ void netconfig_wifi_disable_technology_state_by_only_connman_signal(void)
        connman_wifi_technology_state = FALSE;
 }
 
-int netconfig_wifi_on(void)
-{
-       int err = 0;
-       wifi_tech_state_e wifi_tech_state;
-
-       wifi_tech_state = wifi_state_get_technology_state();
-       if (wifi_tech_state >= NETCONFIG_WIFI_TECH_POWERED)
-               return -EALREADY;
-
-       if (__is_wifi_restricted() == TRUE)
-               return -EPERM;
-
-       if (netconfig_is_wifi_tethering_on() == TRUE) {
-               /* TODO: Wi-Fi tethering turns off here */
-               /* return TRUE; */
-               ERR("Failed to turn tethering off");
-               return -EBUSY;
-       }
-
-#if defined TIZEN_P2P_ENABLE && !defined WLAN_CONCURRENT_MODE
-       if (netconfig_is_wifi_direct_on() == TRUE) {
-               if (__netconfig_wifi_direct_power_off() == TRUE)
-                       return -EINPROGRESS;
-               else {
-                       ERR("Failed to turn Wi-Fi direct off");
-                       return -EBUSY;
-               }
-       }
-#endif
-
-       err = wifi_power_driver_and_supplicant(TRUE);
-       if (err < 0 && err != -EALREADY)
-               return err;
-
-       err = _set_connman_technology_power(TRUE);
-
-       __netconfig_set_wifi_bssid();
-
-       return err;
-}
-
-int netconfig_wifi_off(void)
-{
-       int err;
-
-#if defined TIZEN_P2P_ENABLE && defined WLAN_CONCURRENT_MODE
-       __netconfig_p2p_supplicant(FALSE);
-#endif
-
-       err = _set_connman_technology_power(FALSE);
-       if (err == -EALREADY)
-               wifi_state_update_power_state(FALSE);
-
-       return 0;
-}
-
 #if defined TIZEN_WEARABLE
 int netconfig_wifi_on_wearable(gboolean device_picker_test)
 {
@@ -703,7 +650,6 @@ static void __pm_state_changed_cb(keynode_t* node, void* user_data)
        prev_state = new_state;
 }
 
-#if defined TIZEN_TELEPHONY_ENABLE
 static void _tapi_noti_sim_status_cb(TapiHandle *handle, const char *noti_id,
                                                                                void *data, void *user_data)
 {
@@ -796,7 +742,6 @@ static void __netconfig_telephony_ready_changed_cb(keynode_t * node, void *data)
 done:
        vconf_ignore_key_changed(VCONFKEY_TELEPHONY_READY, __netconfig_telephony_ready_changed_cb);
 }
-#endif
 
 int wifi_power_driver_and_supplicant(gboolean enable)
 {
@@ -930,18 +875,18 @@ void wifi_power_initialize(void)
        /* Update the last Wi-Fi power state */
        netconfig_vconf_get_int(VCONF_WIFI_LAST_POWER_STATE, &wifi_last_power_state);
        if (wifi_last_power_state > VCONFKEY_WIFI_OFF) {
-#if defined TIZEN_TELEPHONY_ENABLE
-               int telephony_ready = 0;
-               netconfig_vconf_get_bool(VCONFKEY_TELEPHONY_READY, &telephony_ready);
-               if (telephony_ready == 0) {
-                       DBG("Telephony API is not initialized yet");
-                       vconf_notify_key_changed(VCONFKEY_TELEPHONY_READY,
-                                       __netconfig_telephony_ready_changed_cb, NULL);
-               } else {
-                       if (netconfig_tapi_check_sim_state() == FALSE)
-                               DBG("SIM is not initialized yet");
+               if (TIZEN_TELEPHONY_ENABLE) {
+                       int telephony_ready = 0;
+                       netconfig_vconf_get_bool(VCONFKEY_TELEPHONY_READY, &telephony_ready);
+                       if (telephony_ready == 0) {
+                               DBG("Telephony API is not initialized yet");
+                               vconf_notify_key_changed(VCONFKEY_TELEPHONY_READY,
+                                               __netconfig_telephony_ready_changed_cb, NULL);
+                       } else {
+                               if (netconfig_tapi_check_sim_state() == FALSE)
+                                       DBG("SIM is not initialized yet");
+                       }
                }
-#endif
                DBG("Turn Wi-Fi on automatically");
 #if defined TIZEN_WEARABLE
                wifi_power_on_wearable(TRUE);
@@ -985,9 +930,8 @@ gboolean handle_load_driver(Wifi *wifi,
                return TRUE;
        }
 
-#if defined TIZEN_WLAN_BOARD_SPRD
-       wifi_firmware_download();
-#endif
+       if (TIZEN_WLAN_BOARD_SPRD)
+               wifi_firmware_download();
 
 #if defined TIZEN_WEARABLE
        err = wifi_power_on_wearable(device_picker_test);
@@ -1061,7 +1005,6 @@ gboolean handle_remove_p2p_driver(Wifi *wifi, GDBusMethodInvocation *context)
        return TRUE;
 }
 
-#if defined TIZEN_TV
 static int __netconfig_get_random_mac(unsigned char *mac_buf, int mac_len)
 {
        DBG("Generate Random Mac address of ethernet");
@@ -1083,9 +1026,9 @@ static int __netconfig_get_random_mac(unsigned char *mac_buf, int mac_len)
 
 void __netconfig_set_ether_macaddr()
 {
-
        DBG("Set wired Mac address ");
        char *mac_addr = NULL;
+       char rand_addr[WLAN_MAC_ADDR_MAX];
        int rv = -1;
 
        mac_addr = vconf_get_str(VCONF_ETH_MAC_ADDRESS);
@@ -1099,10 +1042,10 @@ void __netconfig_set_ether_macaddr()
                /*Generate the Random Mac address*/
                unsigned char rand_mac_add[ETH_MAC_ADDR_SIZE+1];
 
-               if (__netconfig_get_random_mac(rand_mac_add, ETH_MAC_ADDR_SIZE == -1)) {
+               if (__netconfig_get_random_mac(rand_mac_add, ETH_MAC_ADDR_SIZE) == -1) {
 
                        ERR("Could not generate the Random Mac address");
-                       g_free(mac_addr);
+                       free(mac_addr);
                        return;
                }
 
@@ -1110,24 +1053,26 @@ void __netconfig_set_ether_macaddr()
                rand_mac_add[0] |= 0x02; /*set local assignment bit*/
 
                /*Set the Mac address in Vconf*/
-               snprintf(mac_addr, WLAN_MAC_ADDR_MAX, "%x:%x:%x:%x:%x:%x",
+               snprintf(rand_addr, WLAN_MAC_ADDR_MAX, "%x:%x:%x:%x:%x:%x",
                                rand_mac_add[0], rand_mac_add[1],
                                rand_mac_add[2], rand_mac_add[3],
                                rand_mac_add[4], rand_mac_add[5]);
 
-               netconfig_set_vconf_str(VCONF_ETH_MAC_ADDRESS, mac_addr);
+               netconfig_set_vconf_str(VCONF_ETH_MAC_ADDRESS, rand_addr);
+       } else { /* Valid MAC address */
+               strncpy(rand_addr, mac_addr, strlen(mac_addr));
+               rand_addr[strlen(mac_addr)] = '\0';
        }
 
-       DBG("MAC Address of eth0 [%s]", mac_addr);
+       DBG("MAC Address of eth0 [%s]", rand_addr);
        const char *path = NET_EXEC_PATH;
        char *const args[] = { "/sbin/ifconfig", "eth0", "hw",
-               "ether", mac_addr, "up", NULL};
+               "ether", rand_addr, "up", NULL};
        char *const envs[] = { NULL };
        rv = netconfig_execute_file(path, args, envs);
 
        if (rv < 0)
                ERR("Unable to execute system command");
-       g_free(mac_addr);
+       free(mac_addr);
 
 }
-#endif