Fix memory leak 07/170007/2
authorMinje Ahn <minje.ahn@samsung.com>
Mon, 12 Feb 2018 23:41:25 +0000 (08:41 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Tue, 13 Feb 2018 00:51:36 +0000 (09:51 +0900)
Change-Id: Ia32dbf041163d75fd9c9a96668690c8f2f0f8e8a
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
lib/media-util-cynara.c
src/server/media-server-socket.c

index 2da63b9..099b4d1 100755 (executable)
@@ -131,7 +131,12 @@ int ms_cynara_receive_untrusted_message(int sockfd, ms_comm_msg_s *recv_msg, ms_
        MSAPI_RETVM_IF(ret != 0, MS_MEDIA_ERR_INTERNAL, "[CYNARA]Failed to get uid");
 
        ret = cynara_creds_socket_get_client(sockfd, CLIENT_METHOD_SMACK, &(credentials->smack));
-       MSAPI_RETVM_IF(ret != 0, MS_MEDIA_ERR_INTERNAL, "[CYNARA]Failed to get smack");
+       if (ret != 0) {
+               MSAPI_DBG_ERR("[CYNARA]Failed to get smack");
+               MS_SAFE_FREE(credentials->uid);
+
+               return MS_MEDIA_ERR_INTERNAL;
+       }
 
 //     MSAPI_DBG_ERR("cynara_creds_info : P[%d]U[%s]S[%s]", credentials->pid, credentials->uid, credentials->smack);
 
index 2df4d57..222cbe5 100755 (executable)
@@ -312,11 +312,15 @@ gboolean ms_read_socket(gpointer user_data)
        if (strncmp(recv_msg.msg, MEDIA_ROOT_PATH_EXTERNAL, strlen(MEDIA_ROOT_PATH_EXTERNAL)) == 0) {
                if (ms_cynara_check(&creds, EXTERNAL_STORAGE_PRIVILEGE) != MS_MEDIA_ERR_NONE) {
                        res = ret;
+                       MS_SAFE_FREE(creds.smack);
+                       MS_SAFE_FREE(creds.uid);
                        goto ERROR;
                }
        } else {
                if (ms_cynara_check(&creds, MEDIA_STORAGE_PRIVILEGE) != MS_MEDIA_ERR_NONE) {
                        res = ret;
+                       MS_SAFE_FREE(creds.smack);
+                       MS_SAFE_FREE(creds.uid);
                        goto ERROR;
                }
        }
@@ -357,9 +361,6 @@ gboolean ms_read_socket(gpointer user_data)
        return TRUE;
 ERROR:
        {
-               MS_SAFE_FREE(creds.smack);
-               MS_SAFE_FREE(creds.uid);
-
                ms_comm_msg_s res_msg;
 
                memset(&res_msg, 0x0, sizeof(ms_comm_msg_s));
@@ -609,6 +610,8 @@ gboolean ms_read_db_tcp_socket(GIOChannel *src, GIOCondition condition, gpointer
 
        if (ms_cynara_check(&creds, CONTENT_WRITE_PRIVILEGE) != MS_MEDIA_ERR_NONE) {
                MS_DBG_ERR("Permission denied");
+               MS_SAFE_FREE(creds.smack);
+               MS_SAFE_FREE(creds.uid);
                send_msg = MS_MEDIA_ERR_PERMISSION_DENIED;
                goto ERROR;
        }