Modify memory leak of bundle_raw 50/153150/2
authorJiyong Min <jiyong.min@samsung.com>
Thu, 28 Sep 2017 04:19:05 +0000 (13:19 +0900)
committerJiyong Min <jiyong.min@samsung.com>
Thu, 28 Sep 2017 04:21:21 +0000 (13:21 +0900)
(fix coverity issue)

Change-Id: I12dc14dc114e72ec5c92dbacfbc0e29da23b4dfc
Signed-off-by: Jiyong Min <jiyong.min@samsung.com>
packaging/capi-media-controller.spec
src/media_controller_client.c
src/media_controller_server.c
src/media_controller_util.c

index a23d8cf34733aba74590c6669d2543efc46d92e8..c14f36697cb1910d0c1b75a3f555d196f61ff367 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       capi-media-controller
 Summary:    A media controller library in Tizen Native API
-Version:    0.1.49
+Version:    0.1.50
 Release:    1
 Group:      Multimedia/API
 License:    Apache-2.0
index edbd83ef8d0c90fa5fd1f700dfd62d2eecc40a1b..5ca90f5db321d34216c869552c7e16931aa2d5a7 100755 (executable)
@@ -1022,6 +1022,9 @@ int mc_client_send_custom_command(mc_client_h client, const char *server_name, c
        else
                message = g_strdup_printf("%s%s%s%s%d%s%s", mc_client->client_name, MC_STRING_DELIMITER, command, MC_STRING_DELIMITER, size_r, MC_STRING_DELIMITER, (unsigned char *)raw_data);
 
+       if (raw_data != NULL)
+               bundle_free_encoded_rawdata(&raw_data);
+
        if (message == NULL) {
                mc_error("Error when making message");
                return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
index b857a5cb0b564dc69ccf9e020a8a360ca8b42553..3b80644a1b5473ca0d4a066d4ff21aaf947a519f 100755 (executable)
@@ -518,7 +518,13 @@ int mc_server_send_command_reply(mc_server_h server, const char *client_name, in
                }
        }
 
-       message = g_strdup_printf("%s%s%d%s%d%s%s", mc_server->server_name, MC_STRING_DELIMITER, result_code, MC_STRING_DELIMITER, size_r, MC_STRING_DELIMITER, (unsigned char *)raw_data);
+       if ((size_r == 0) || (raw_data == NULL))
+               message = g_strdup_printf("%s%s%d%s%d%s", mc_server->server_name, MC_STRING_DELIMITER, result_code, MC_STRING_DELIMITER, size_r);
+       else
+               message = g_strdup_printf("%s%s%d%s%d%s%s", mc_server->server_name, MC_STRING_DELIMITER, result_code, MC_STRING_DELIMITER, size_r, MC_STRING_DELIMITER, (unsigned char *)raw_data);
+
+       if (raw_data)
+               bundle_free_encoded_rawdata(&raw_data);
 
        char *interface_name = mc_util_get_interface_name(MC_CLIENT, client_name);
        ret = mc_ipc_send_message(mc_server->dconn, NULL, interface_name, MC_DBUS_SIGNAL_NAME_CMD_REPLY, message, 0);
index 7ad6f2a6334cb2764a6a1c1b7655ff5ecc92a6c3..6c842e6f5eeaba3a4627d30af87e0bebb232abcc 100755 (executable)
@@ -41,15 +41,19 @@ static void _mc_util_check_valid_name(const char *name, char **valid_name)
                        (old_word[i] == '_' && i != 0)) {
                        new_word[j++] = old_word[i];
                } else {
-                       new_word[j++] = 'A';
-                       new_word[j++] = 'P';
-                       new_word[j++] = 'P';
-                       new_word[j++] = 'I';
-                       new_word[j++] = 'D';
-                       new_word[j++] = '_';
-                       new_word[j++] = 'S';
-                       new_word[j++] = 'E';
-                       new_word[j++] = 'P';
+                       if (j + 9 < sizeof(new_word)) {
+                               new_word[j++] = 'A';
+                               new_word[j++] = 'P';
+                               new_word[j++] = 'P';
+                               new_word[j++] = 'I';
+                               new_word[j++] = 'D';
+                               new_word[j++] = '_';
+                               new_word[j++] = 'S';
+                               new_word[j++] = 'E';
+                               new_word[j++] = 'P';
+                       } else {
+                               mc_error("Error failed to check valid name due to overrun!");
+                       }
                }
        }