Fix issues reported by a static analyzer 20/127420/4 accepted/tizen/unified/20170428.032838 submit/tizen/20170427.090631
authorJiung Yu <jiung.yu@samsung.com>
Thu, 27 Apr 2017 07:46:40 +0000 (16:46 +0900)
committerJiung Yu <jiung.yu@samsung.com>
Thu, 27 Apr 2017 08:29:23 +0000 (17:29 +0900)
Change-Id: I60e6aaef2b7384001f36e0a3c7cf98ff11663bed
Signed-off-by: Yu jiung <jiung.yu@samsung.com>
include/asp-tech.h
packaging/asp-manager.spec
src/asp-manager-gdbus.c
src/asp-manager.c
src/session/asp-p2p-conn.h
src/session/asp-session.c
src/tech/asp-tech-infra.c
src/tech/asp-tech-p2p.c

index 56588ab..64f79c0 100755 (executable)
@@ -22,7 +22,7 @@
 typedef void (*asp_tech_session_request_cb)(gint32 error_code, const guint8 *session_mac, guint32 session_id, guint32 adv_id, const gchar *device_name, size_t name_length, const guint8 *session_info, size_t info_length, gboolean get_pin, guint32 pin, gpointer user_data);
 typedef void (*asp_tech_session_config_request_cb)(gint32 error_code, const guint8 *session_mac, guint32 session_id, gboolean get_pin, guint32 pin, gpointer user_data);
 typedef void (*asp_tech_connect_status_cb)(gint32 error_code, const guint8 *session_mac, guint32 session_id, asp_session_connect_status_e status, gpointer user_data);
-typedef void (*asp_tech_ip_assigned_cb)(gint32 error_code, const guint8 *session_mac, guint32 session_id, gchar *service_mac, gchar *peer_ip_addr, gint32 ip_length, gpointer user_data);
+typedef void (*asp_tech_ip_assigned_cb)(gint32 error_code, const guint8 *session_mac, guint32 session_id, const guint8 *service_mac, gchar *peer_ip_addr, gint32 ip_length, gpointer user_data);
 
 #define PINSTR_LEN 8
 #ifndef MACSTR_LEN
index f2ecafd..2c38bd1 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       asp-manager
 Summary:    ASP(application service platform) manager
-Version:    0.0.13
+Version:    0.0.14
 Release:    2
 Group:      Network & Connectivity/Other
 License:    Apache-2.0
index d9ebe5d..f3d3114 100755 (executable)
@@ -134,6 +134,12 @@ static gboolean __asp_manager_gdbus_advertise_service(AspService *object,
        service.service_info_map = NULL;
 
        g_variant_get(parameters, "a{sv}", &iter);
+       if(!iter) {
+               ASP_LOGE("Failed to get iter");
+               ASP_RETURN_SERVICE_ERR(invocation, -ASP_ERROR_OPERATION_FAILED);
+               goto out;
+       }
+
        while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
 
                if (!g_strcmp0(key, "adv_id"))
@@ -202,6 +208,12 @@ static gboolean __asp_manager_gdbus_service_status_change(AspService *object,
 
        memset(&service, 0, sizeof(asp_service_advertise_s));
        g_variant_get(parameters, "a{sv}", &iter);
+       if(!iter) {
+               ASP_LOGE("Failed to get iter");
+               ASP_RETURN_SERVICE_ERR(invocation, -ASP_ERROR_OPERATION_FAILED);
+               goto out;
+       }
+
        while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
 
                if (!g_strcmp0(key, "adv_id"))
@@ -314,6 +326,12 @@ static gboolean __asp_manager_gdbus_seek_service(AspService *object,
        service.service_info_map = NULL;
 
        g_variant_get(parameters, "a{sv}", &iter);
+       if(!iter) {
+               ASP_LOGE("Failed to get iter");
+               ASP_RETURN_SERVICE_ERR(invocation, -ASP_ERROR_OPERATION_FAILED);
+               goto out;
+       }
+
        while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
 
                if (!g_strcmp0(key, "discovery_tech"))
@@ -476,6 +494,12 @@ static gboolean __asp_manager_gdbus_connect_session(AspSession *object,
        DEBUG_PARAMS(parameters);
 
        g_variant_get(parameters, "a{sv}", &iter);
+       if(!iter) {
+               ASP_LOGE("Failed to get iter");
+               ASP_RETURN_SERVICE_ERR(invocation, -ASP_ERROR_OPERATION_FAILED);
+               goto out;
+       }
+
        while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
 
                if (!g_strcmp0(key, "service_mac")) {
@@ -577,6 +601,12 @@ static gboolean __asp_manager_gdbus_confirm_session(AspSession *object,
        DEBUG_PARAMS(parameters);
 
        g_variant_get(parameters, "a{sv}", &iter);
+       if(!iter) {
+               ASP_LOGE("Failed to get iter");
+               ASP_RETURN_SERVICE_ERR(invocation, -ASP_ERROR_OPERATION_FAILED);
+               goto out;
+       }
+
        while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
                if (!g_strcmp0(key, "session_mac"))
                        g_variant_get(var, "&s", &session_mac);
@@ -794,6 +824,12 @@ static gboolean __asp_manager_gdbus_bound_port(AspSession *object,
        DEBUG_PARAMS(parameters);
 
        g_variant_get(parameters, "a{sv}", &iter);
+       if(!iter) {
+               ASP_LOGE("Failed to get iter");
+               ASP_RETURN_SERVICE_ERR(invocation, -ASP_ERROR_OPERATION_FAILED);
+               goto out;
+       }
+
        while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
                if (!g_strcmp0(key, "session_mac"))
                        g_variant_get(var, "&s", &session_mac);
@@ -834,6 +870,7 @@ static gboolean __asp_manager_gdbus_bound_port(AspSession *object,
        asp_session_complete_bound_port(object, invocation, ASP_ERROR_NONE);
 
 out:
+       g_variant_iter_free(iter);
        __ASP_LOG_FUNC_EXIT__;
        return TRUE;
 }
@@ -866,6 +903,12 @@ static gboolean __asp_manager_gdbus_release_port(AspSession *object,
        DEBUG_PARAMS(parameters);
 
        g_variant_get(parameters, "a{sv}", &iter);
+       if(!iter) {
+               ASP_LOGE("Failed to get iter");
+               ASP_RETURN_SERVICE_ERR(invocation, -ASP_ERROR_OPERATION_FAILED);
+               goto out;
+       }
+
        while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
                if (!g_strcmp0(key, "session_mac"))
                        g_variant_get(var, "&s", &session_mac);
@@ -904,6 +947,7 @@ static gboolean __asp_manager_gdbus_release_port(AspSession *object,
        asp_session_complete_release_port(object, invocation, ASP_ERROR_NONE);
 
 out:
+       g_variant_iter_free(iter);
        __ASP_LOG_FUNC_EXIT__;
        return TRUE;
 }
index bf69055..9790aaf 100755 (executable)
@@ -104,7 +104,7 @@ static void __connect_status_cb(gint32 error_code, const guint8 *session_mac,
 
 
        asp_manager_gdbus_notify_connect_status(session_mac_str, session_id,
-                       status, deferred_resp);
+                       status, (gchar *)deferred_resp);
 
        __ASP_LOG_FUNC_EXIT__;
        return;
index 155811f..90cd507 100644 (file)
@@ -11,7 +11,7 @@ typedef void (*asp_p2p_conn_connect_status_cb)(gint32 error_code,
                const guint8 *session_mac, guint32 session_id,
                asp_session_connect_status_e status, gpointer user_data);
 typedef void (*asp_p2p_conn_ip_assigned_cb)(gint32 error_code,
-               const guint8 *session_mac, guint32 session_id, gchar *service_mac,
+               const guint8 *session_mac, guint32 session_id, const guint8 *service_mac,
                gchar *peer_ip_addr, gint32 ip_length,  gpointer user_data);
 
 void asp_p2p_conn_initialize();
index 36988f3..827a95a 100644 (file)
@@ -334,7 +334,7 @@ void _p2p_conn_session_config_request_cb(gint32 error_code,
 void _p2p_conn_connect_status_cb(gint32 error_code, const guint8 *session_mac,
                                 guint32 session_id, asp_session_connect_status_e status, gpointer user_data);
 void _p2p_conn_ip_assigned_cb(gint32 error_code, const guint8 *session_mac,
-                             guint32 session_id, gchar *service_mac, gchar *peer_ip_addr, gint32 ip_length,
+                             guint32 session_id, const guint8 *service_mac, gchar *peer_ip_addr, gint32 ip_length,
                              gpointer user_data);
 
 /* state machine using gfsm */
@@ -782,7 +782,7 @@ void _p2p_conn_connect_status_cb(gint32 error_code, const guint8 *session_mac,
 }
 
 void _p2p_conn_ip_assigned_cb(gint32 error_code, const guint8 *session_mac,
-                             guint32 session_id, gchar *service_mac, gchar *peer_ip_addr, gint32 ip_length,
+                             guint32 session_id, const guint8 *service_mac, gchar *peer_ip_addr, gint32 ip_length,
                              gpointer user_data)
 {
        INFO_MSG;
@@ -1548,14 +1548,16 @@ void _get_ip_from_socketaddress(GSocketAddress *sock_addr, gchar *peer_ip)
 {
        GInetSocketAddress *inetaddr;
        GInetAddress *hostaddr;
+       gchar *ip_str = NULL;
 
        inetaddr = G_INET_SOCKET_ADDRESS(sock_addr);
        hostaddr = g_inet_socket_address_get_address(inetaddr);
 
-       g_strlcpy(peer_ip, g_inet_address_to_string(hostaddr),
-                 ASP_SESSION_IPV4_STR_LEN);
+       ip_str = g_inet_address_to_string(hostaddr);
+       g_strlcpy(peer_ip, ip_str, ASP_SESSION_IPV4_STR_LEN);
 
        ASP_LOGD("%s peer_ip: %s", ROLE, peer_ip);
+       g_free(ip_str);
 
        /*g_object_unref(hostaddr); */
        /*g_object_unref(inetaddr); */
index 3127780..6dd5fff 100644 (file)
@@ -140,7 +140,7 @@ static void _search_result_cb(dnssd_service_state_e service_state,
        asp_event_data event;
        guint32 search_id = -1;
        gchar *service_mac = NULL;
-       const gchar *service_device_name = NULL;
+       gchar *service_device_name = NULL;
        guint32 adv_id = -1;
        gchar *service_name = NULL;
        GHashTable *service_info_map = NULL;
@@ -200,8 +200,8 @@ static void _search_result_cb(dnssd_service_state_e service_state,
        event.search_result.service_info = service_info_map;
        asp_manager_event(NULL, ASP_EVENT_SEARCH_RESULT, &event);
 
-       if (service_mac)
-               g_free(service_mac);
+       g_free(service_device_name);
+       g_free(service_mac);
 }
 
 static gint32 __asp_service_infra_convert_error_type(gint32 dnssd_error)
@@ -370,15 +370,18 @@ gint32 asp_tech_infra_advertise(asp_service_advertise_s *service, gint32 replace
        result = wifi_deinitialize();
        if (result != WIFI_ERROR_NONE) {
                ASP_LOGD("Failed to deinitialize wifi");
+               free(if_name);
                return ASP_ERROR_OPERATION_FAILED;
        }
 
        result = dnssd_service_set_interface(service_handle, if_name);
        if (result != DNSSD_ERROR_NONE) {
                result = __asp_service_infra_convert_error_type(result);
+               free(if_name);
                return result;
        }
        ASP_LOGD("Success to set interface %s", if_name);
+       free(if_name);
 
        result = dnssd_register_local_service(service_handle,
                        _advertise_status_cb, GUINT_TO_POINTER(service->adv_id));
@@ -408,14 +411,19 @@ gint32 asp_tech_infra_advertise(asp_service_advertise_s *service, gint32 replace
 
        /* Add MAC Address to TXT record */
        mac_addr = vconf_get_str(VCONFKEY_WIFI_BSSID_ADDRESS);
+       if (!mac_addr) {
+               ASP_LOGE("Failed to get vconf value for %s", VCONFKEY_WIFI_BSSID_ADDRESS);
+               return ASP_ERROR_OPERATION_FAILED;
+       }
+
        mac_addr_len = strlen(mac_addr);
        result = __add_txt_record(service_handle, ASP_INFRA_MAC_ADDR_KEY, mac_addr, mac_addr_len);
        if (result != DNSSD_ERROR_NONE) {
                result = __asp_service_infra_convert_error_type(result);
-               g_free(mac_addr);
+               free(mac_addr);
                return result;
        }
-       g_free(mac_addr);
+       free(mac_addr);
 
        /* Other TXT records */
        if (service->service_info_map != NULL) {
@@ -487,6 +495,7 @@ gint32 asp_tech_infra_seek(asp_service_seek_s *service)
        result = wifi_deinitialize();
        if (result != WIFI_ERROR_NONE) {
                ASP_LOGD("Failed to deinitialize wifi");
+               free(if_name);
                return ASP_ERROR_OPERATION_FAILED;
        }
 
@@ -497,6 +506,7 @@ gint32 asp_tech_infra_seek(asp_service_seek_s *service)
 
        if (result != DNSSD_ERROR_NONE) {
                result = __asp_service_infra_convert_error_type(result);
+               free(if_name);
                return result;
        }
        ASP_LOGD("Success to start browsing service. service_type: %s, browser_handle: %u",
@@ -509,6 +519,7 @@ gint32 asp_tech_infra_seek(asp_service_seek_s *service)
                        service->search_id, browser_handle,
                        g_hash_table_size(g_browser_hash));
 
+       free(if_name);
        __ASP_LOG_FUNC_EXIT__;
        return result;
 }
index cfff527..b3bc0fc 100755 (executable)
@@ -406,6 +406,7 @@ void asp_tech_p2p_process_search_result(GDBusConnection *connection,
        g_free(device_name);
        g_free(instance_name);
        g_hash_table_remove_all(service_info_map);
+       g_variant_iter_free(iter);
 
        __ASP_LOG_FUNC_EXIT__;
        return;
@@ -440,8 +441,12 @@ void asp_tech_p2p_process_session_request(GDBusConnection *connection,
                if (!g_strcmp0(key, "adv_id")) {
                        g_variant_get(var, "u", &adv_id);
                } else if (!g_strcmp0(key, "session_mac")) {
-                       if (asp_dbus_unpack_ay(session_mac, var, MAC_LEN) < 0)
+                       if (asp_dbus_unpack_ay(session_mac, var, MAC_LEN) < 0) {
+                               g_free(device_name);
+                               g_free(session_info);
+                               g_variant_iter_free(iter);
                                return;
+                       }
                }  else if (!g_strcmp0(key, "session_id")) {
                        g_variant_get(var, "u", &session_id);
                }  else if (!g_strcmp0(key, "device_name")) {
@@ -470,6 +475,7 @@ void asp_tech_p2p_process_session_request(GDBusConnection *connection,
                                asp_tech_p2p_ops.session_request_cb_user_data);
        }
 
+       g_variant_iter_free(iter);
        g_free(device_name);
        g_free(session_info);
 
@@ -515,6 +521,7 @@ void asp_tech_p2p_process_session_config_request(GDBusConnection *connection,
                                session_mac, session_id, get_pin, pin,
                                asp_tech_p2p_ops.session_config_request_cb_user_data);
        }
+       g_variant_iter_free(iter);
 
        __ASP_LOG_FUNC_EXIT__;
        return;
@@ -542,8 +549,11 @@ void asp_tech_p2p_process_connect_status(GDBusConnection *connection,
        g_variant_get(parameters, "(a{sv})", &iter);
        while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
                if (!g_strcmp0(key, "session_mac")) {
-                       if (asp_dbus_unpack_ay(session_mac, var, MAC_LEN) < 0)
+                       if (asp_dbus_unpack_ay(session_mac, var, MAC_LEN) < 0) {
+                               g_variant_iter_free(iter);
+                               g_free(deferred);
                                return;
+                       }
                } else if (!g_strcmp0(key, "session_id")) {
                        g_variant_get(var, "u", &session_id);
                } else if (!g_strcmp0(key, "status")) {
@@ -562,6 +572,7 @@ void asp_tech_p2p_process_connect_status(GDBusConnection *connection,
                                asp_tech_p2p_ops.connect_status_cb_user_data);
        }
 
+       g_variant_iter_free(iter);
        g_free(deferred);
 
        __ASP_LOG_FUNC_EXIT__;
@@ -590,8 +601,11 @@ void asp_tech_p2p_process_session_peer_ip(GDBusConnection *connection,
        g_variant_get(parameters, "(a{sv})", &iter);
        while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
                if (!g_strcmp0(key, "session_mac")) {
-                       if (asp_dbus_unpack_ay(session_mac, var, MAC_LEN) < 0)
+                       if (asp_dbus_unpack_ay(session_mac, var, MAC_LEN) < 0) {
+                               g_variant_iter_free(iter);
+                               g_free(peer_ip);
                                return;
+                       }
                } else if (!g_strcmp0(key, "session_id")) {
                        g_variant_get(var, "u", &session_id);
                } else if (!g_strcmp0(key, "service_mac")) {
@@ -607,6 +621,8 @@ void asp_tech_p2p_process_session_peer_ip(GDBusConnection *connection,
 
        if (peer_ip == NULL) {
                ASP_LOGE("Invalid peer IP address");
+               g_variant_iter_free(iter);
+               g_free(peer_ip);
                return;
        }
 
@@ -616,6 +632,7 @@ void asp_tech_p2p_process_session_peer_ip(GDBusConnection *connection,
                                strlen(peer_ip), asp_tech_p2p_ops.ip_assigned_cb_user_data);
        }
 
+       g_variant_iter_free(iter);
        g_free(peer_ip);
 
        __ASP_LOG_FUNC_EXIT__;
@@ -927,6 +944,7 @@ gint32 asp_tech_p2p_get_peer_role(const guint8 *mac_addr, gint32 *is_connected,
                        ;/* Do Nothing */
        }
 
+       g_variant_iter_free(iter_peer);
        g_variant_unref(reply);
        if (is_group_owner)
                *role = ASP_TECH_P2P_ROLE_GO;