Modify memory leak and wrong return for static analyzer warning 46/53146/2 accepted/tizen/mobile/20151202.091916 accepted/tizen/tv/20151202.091938 accepted/tizen/wearable/20151202.092004 submit/tizen/20151202.084002
authorJi Yong Min <jiyong.min@samsung.com>
Wed, 2 Dec 2015 06:23:49 +0000 (15:23 +0900)
committerJi Yong Min <jiyong.min@samsung.com>
Wed, 2 Dec 2015 06:26:14 +0000 (15:26 +0900)
Change-Id: I6534ff819ae83cb6438799ffa2df61cac004a3f4
Signed-off-by: Jiyong Min <jiyong.min@samsung.com>
packaging/capi-media-controller.spec
src/media_controller_client.c
src/media_controller_ipc.c
src/media_controller_util.c
svc/media_controller_svc.c

index ff10677a893e1a163ffbbf206bc25c25dd376c92..6ff94fc10fddc03a72ffa79a83242ed95d06baf2 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       capi-media-controller
 Summary:    Multimedia Controller for player application
-Version:    0.0.11
+Version:    0.0.12
 Release:    1
 Group:      System/Libraries
 License:    Apache-2.0
index 5ea07068c03985d68c1b5183b8a2d01fc239353c..ebf8826cbfe4f5d98cf85b4d97f944e8872a11bb 100755 (executable)
@@ -56,13 +56,19 @@ static void __client_playback_cb(const char *interface_name, const char *signal_
        mc_retm_if(playback == NULL, "Error allocation memory");
 
        params = g_strsplit(message, MC_STRING_DELIMITER, 0);
-       mc_retm_if(params == NULL, "invalid playback data");
+       if (params == NULL) {
+               mc_error("invalid playback data");
+               MC_SAFE_FREE(playback);
+               return;
+       }
 
        playback->state = atoi(params[1]);
        playback->position = atol(params[2]);
 
        callback(params[0], (mc_playback_h) playback, reciever->user_data);
 
+       MC_SAFE_FREE(playback);
+
        g_strfreev(params);
 }
 
@@ -949,6 +955,7 @@ int mc_client_send_playback_state_command(mc_client_h client, const char *server
        ret = mc_util_set_command_availabe(mc_client->client_name, MC_COMMAND_PLAYBACKSTATE, NULL);
        if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
                mc_error("Error mc_util_set_command_availabe [%d]", ret);
+               MC_SAFE_FREE(message);
                return ret;
        }
 
index f9687117602bb97d9fd4405d4d07cea2e63582f4..0adc70c1844e2621456a7a86805e76805d5b2802 100755 (executable)
@@ -70,6 +70,7 @@ static void __mc_ipc_signal_cb(GDBusConnection *connection,
                        listener->callback(listener->interface_name, listener->signal_name, message, 0, listener->user_data);
                }
        }
+       MC_SAFE_FREE(key);
 }
 
 static gboolean _mc_ipc_is_listener_duplicated(GList *listener_list, const char *key)
index 1c368f4096fc44aa67aa92bba6187c79ea0609bc..40bba187bc00448144b8273c795c85f6b87442de 100755 (executable)
@@ -127,6 +127,8 @@ int mc_util_set_command_availabe(const char *name, const char *command_type, con
 
        ret = mc_ipc_send_message_to_server(MC_MSG_CLIENT_SET, message);
 
+       MC_SAFE_FREE(message);
+
        return ret;
 }
 
@@ -147,5 +149,7 @@ int mc_util_get_command_availabe(const char *name, const char *command_type, con
 
        ret = mc_ipc_send_message_to_server(MC_MSG_CLIENT_GET, message);
 
+       MC_SAFE_FREE(message);
+
        return ret;
 }
index dd24f9b2cc0bcd937502668559490b95776a4f97..a84a7e6c2dde24ef0b5aa174a1363fcb71f04d9f 100755 (executable)
@@ -293,18 +293,11 @@ gboolean mc_svc_thread(void *data)
        }
        memset(mc_svc_data, 0, sizeof(mc_svc_data_t));
 
-       /* Create TCP Socket*/
-       ret = mc_ipc_create_server_socket(MC_DB_UPDATE_PORT, &sockfd);
-       if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
-               /* Disconnect DB*/
-               mc_error("Failed to create socket");
-               return FALSE;
-       }
-
        ret = __mc_dbus_get_uid(UID_DBUS_NAME, UID_DBUS_PATH, UID_DBUS_INTERFACE, UID_DBUS_METHOD, &uid);
        if (ret < 0) {
                mc_debug("Failed to send dbus (%d)", ret);
-               return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
+               MC_SAFE_FREE(mc_svc_data);
+               return FALSE;
        } else {
                mc_debug("%d get UID[%d]", ret, uid);
        }
@@ -312,7 +305,8 @@ gboolean mc_svc_thread(void *data)
        /* Connect media controller DB*/
        if (mc_db_util_connect(&(mc_svc_data->db_handle), uid, true) != MEDIA_CONTROLLER_ERROR_NONE) {
                mc_error("Failed to connect DB");
-               return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
+               MC_SAFE_FREE(mc_svc_data);
+               return FALSE;
        }
 
        /* Destroy tables */
@@ -322,12 +316,24 @@ gboolean mc_svc_thread(void *data)
        /* Create tables */
        if (mc_db_util_create_tables(mc_svc_data->db_handle) != MEDIA_CONTROLLER_ERROR_NONE) {
                mc_error("mc_db_util_create_tables failed [%d]", ret);
+               MC_SAFE_FREE(mc_svc_data);
+               return FALSE;
+       }
+
+       /* Create TCP Socket*/
+       ret = mc_ipc_create_server_socket(MC_DB_UPDATE_PORT, &sockfd);
+       if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
+               /* Disconnect DB*/
+               mc_error("Failed to create socket");
+               MC_SAFE_FREE(mc_svc_data);
                return FALSE;
        }
 
        ret = mc_cynara_enable_credentials_passing(sockfd);
        if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
                mc_error("Failed to append socket options");
+               MC_SAFE_FREE(mc_svc_data);
+               close(sockfd);
                return FALSE;
        }
 
@@ -380,7 +386,6 @@ gboolean mc_svc_thread(void *data)
        /* Disconnect media controller DB*/
        if (mc_db_util_disconnect(mc_svc_data->db_handle) != MEDIA_CONTROLLER_ERROR_NONE) {
                mc_error("Failed to connect DB");
-               return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
        }
 
        /*close socket*/