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 a23d8cf..c14f366 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 edbd83e..5ca90f5 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 b857a5c..3b80644 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 7ad6f2a..6c842e6 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!");
+                       }
                }
        }