Fix resource leaks
authorJaehyun Kim <jeik01.kim@samsung.com>
Sun, 3 Feb 2013 11:49:46 +0000 (20:49 +0900)
committerJaehyun Kim <jeik01.kim@samsung.com>
Sun, 3 Feb 2013 13:17:15 +0000 (22:17 +0900)
Change-Id: I2798b1d1d2b1c363de66f9dc002e97b49aa327b7

debian/changelog
packaging/wifi-direct-manager.spec
plugin/wpasupplicant/src/wifi-direct-plugin.c
src/wifi-direct-client-handler.c
src/wifi-direct-main.c

index 4fe45fb..5a3a54e 100644 (file)
@@ -1,3 +1,11 @@
+wfi-direct-manager (0.6.6) precise; urgency=low
+
+  * Fix resource leaks
+  * Git : framework/connectivity/wifi-direct-manager
+  * Tag : wifi-direct-manager_0.6.6
+
+ -- Jaehyun Kim <jeik01@samsung.com>  Sun, 03 Feb 2013 20:45:45 +0900
+
 wfi-direct-manager (0.6.5) precise; urgency=low
 
   * Remove unuseful code
index 1a162c2..a641912 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       wifi-direct-manager
 Summary:    Wi-Fi Direct manger
-Version:    0.6.5
+Version:    0.6.6
 Release:    1
 Group:      TO_BE_FILLED
 License:    Apache License Version 2.0
index 73b65ae..0f01966 100644 (file)
@@ -261,6 +261,7 @@ int __create_ctrl_intf(char *ctrl_intf_name, char *path)
                if (bind(sockfd, (struct sockaddr*)&localAddr, sizeof(localAddr)) < 0)
                {
                        WDP_LOGE( "Error!!! bind(). Error = [%s]. Give up..\n", strerror(errno));
+                       close(sockfd);
                        __WDP_LOG_FUNC_EXIT__;
                        return -1;
                }
@@ -273,13 +274,15 @@ int __create_ctrl_intf(char *ctrl_intf_name, char *path)
                if (unlink(path) < 0)
                {
                        WDP_LOGE("unlink[ctrl_iface], Error=[%s]", strerror(errno));
+                       close(sockfd);
                        __WDP_LOG_FUNC_EXIT__;
                        return -1;
                }
 
-               if (bind(sockfd, (struct sockaddr*)&servAddr, sizeof(servAddr)) < 0)
+               if (connect(sockfd, (struct sockaddr*)&servAddr, sizeof(servAddr)) < 0)
                {
                        WDP_LOGE("bind[PF_UNIX], Error=[%s]", strerror(errno));
+                       close(sockfd);
                        __WDP_LOG_FUNC_EXIT__;
                        return -1;
                }
@@ -1311,6 +1314,7 @@ int __get_network_id_from_persistent_client_list_with_mac(char* peer_mac_address
 
                if (strcmp(stored_peer_mac, peer_mac_address) == 0)
                {
+                       fclose(fp);
                        return network_id;
                }
        }
@@ -1350,6 +1354,7 @@ bool __is_already_stored_persistent_client(int network_id, char* peer_mac_addres
                        && (stored_network_id == network_id))
                {
                        WDP_LOGD( "found peer in persistent peer list\n");
+                       fclose(fp);
                        __WDP_LOG_FUNC_EXIT__;
                        return true;
                }
@@ -2953,6 +2958,7 @@ int wfd_ws_get_peer_info(unsigned char *mac_addr, wfd_discovery_entry_s **peer)
        {
                WDP_LOGE( "__send_wpa_request FAILED!!\n");
                *peer = NULL;
+               g_free(wfd_peer_info);
                __WDP_LOG_FUNC_EXIT__;
                return false;
        }
@@ -2960,6 +2966,7 @@ int wfd_ws_get_peer_info(unsigned char *mac_addr, wfd_discovery_entry_s **peer)
        if ( (result == 0) || (strncmp(res_buffer, "FAIL", 4) == 0))    /* p2p_supplicant returns the 'FAIL' if there is no discovered peer. */
        {
                *peer = NULL;
+               g_free(wfd_peer_info);
                __WDP_LOG_FUNC_EXIT__;
                return false;
        }
index 5bc4f93..edbdbbe 100644 (file)
@@ -564,6 +564,8 @@ void wfd_server_process_client_request(wifi_direct_client_request_s * client_req
 
                __wfd_server_print_entry_list((wfd_discovery_entry_s*)plist, peer_count);
                wfd_server_send_response(client->sync_sockfd, msg, total_msg_len);
+
+               g_free(msg);
                __WDS_LOG_FUNC_EXIT__;
                return;
        }
@@ -1297,9 +1299,11 @@ void wfd_server_process_client_request(wifi_direct_client_request_s * client_req
                        if (wfd_server_send_response(client->sync_sockfd, &resp, sizeof(wifi_direct_client_response_s)) < 0)
                        {
                                wfd_server_reset_client(client->sync_sockfd);
+                               g_free(plist);
                                __WDS_LOG_FUNC_EXIT__;
                                return;
                        }
+                       g_free(plist);
                        break;
                }
 
@@ -1316,10 +1320,13 @@ void wfd_server_process_client_request(wifi_direct_client_request_s * client_req
                if (wfd_server_send_response(client->sync_sockfd, msg, total_msg_len) < 0)
                {
                        wfd_server_reset_client(client->sync_sockfd);
+                       g_free(plist);
+                       g_free(msg);
                        __WDS_LOG_FUNC_EXIT__;
                        return;
                }
-
+               g_free(plist);
+               g_free(msg);
        }
        break;
 
index 3e7b421..0c53a33 100644 (file)
@@ -252,6 +252,7 @@ static int wfd_server_create_socket(void)
        if (bind(sockfd, (struct sockaddr *) &servAddr, len) == -1)
        {
                WDS_LOGE( "Failed to bind server socket. Error = [%s]", strerror(errno));
+               close(sockfd);
                __WDS_LOG_FUNC_EXIT__;
                return -1;
        }
@@ -261,6 +262,8 @@ static int wfd_server_create_socket(void)
        if (chmod(WFD_SERVER_SOCKET_PATH, sock_mode) < 0)
        {
                WDS_LOGD( "Failed to change server socket file mode");
+               close(sockfd);
+               __WDS_LOG_FUNC_EXIT__;
                return -1;
        }
 
@@ -268,6 +271,7 @@ static int wfd_server_create_socket(void)
        if (listen(sockfd, WFD_MAX_CLIENTS) == -1)
        {
                WDS_LOGF( "Failed to listen server socket. Error = [%s]", strerror(errno));
+               close(sockfd);
                __WDS_LOG_FUNC_EXIT__;
                return -1;
        }
@@ -303,6 +307,7 @@ void wfd_load_plugin()
 
        if (!plugin_load) {
                WDS_LOGF( "Failed to load symbol. Error = [%s]", strerror(errno));
+               dlclose(handle);
                return ;
        }