Seperate 'params' variable from parsing and updating database 48/226548/4
authorjiyong.min <jiyong.min@samsung.com>
Tue, 3 Mar 2020 03:25:31 +0000 (12:25 +0900)
committerjiyong.min <jiyong.min@samsung.com>
Wed, 4 Mar 2020 03:01:47 +0000 (12:01 +0900)
Change-Id: I99023a723c8c56aaa9f9d9295d5fce2fca7d065b

svc/include/media_controller_db_util.h
svc/media_controller_db_util.c
svc/media_controller_svc.c

index 6960445f75d6c2a2537932e245b9330d8b2d09df..aac33d8ad8a871d8ced00a64c526a64be6f16c54 100644 (file)
@@ -31,7 +31,7 @@ int mc_db_util_init_latest_server_table(sqlite3 *handle);
 int mc_db_util_delete_app_list(sqlite3 *handle);
 int mc_db_util_get_user_version(sqlite3 *handle, int *version);
 int mc_db_util_set_user_version(sqlite3 *handle);
-int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size);
+int mc_db_request(uid_t uid, const char *data, int data_size);
 int mc_db_add_application(uid_t uid, const char *app_id, mc_priv_type_e priv_type);
 int mc_db_remove_application(uid_t uid, const char *app_id, mc_priv_type_e priv_type);
 
index efc8b733c4895ab2be2221f660ce54197631d2f3..ded1966597c88b016e28095f53d63b0ec1ebea20 100644 (file)
@@ -634,35 +634,23 @@ static void  __playlist_cb(const char *key, const int type, const bundle_keyval_
        *query_list = g_list_append(*query_list, sql_str);
 }
 
-int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size)
+static int __parse_and_update_db(uid_t uid, gchar **params)
 {
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
        char *sql_str = NULL;
-       gchar **params = NULL;
        int i_value = 0;
        int i_value_1 = 0;
        int i_value_2 = 0;
        unsigned long long llu_value = 0, llu_value2 = 0;
        sqlite3* _db_handle = NULL;
 
-       mc_retvm_if(data == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "data is NULL");
-       mc_retvm_if(data_size <= 0 , MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid data_size");
-
-       params = g_strsplit(data, MC_STRING_DELIMITER, 0);
-       mc_retvm_if(params == NULL, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "fail to parsing query");
-
-       if (!params[0] || !params[1]) {
-               mc_error("invalid query");
-               g_strfreev(params);
-               return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
-       }
+       mc_retvm_if(!params, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid params");
+       mc_retvm_if((!params[0] || !params[1]),
+                       MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query");
 
        if (strncmp(MC_DB_CMD_UPDATE_PLAYBACK, params[0], strlen(MC_DB_CMD_UPDATE_PLAYBACK)) == 0) {
-               if (!params[2] || !params[3] || !params[4] || !params[5]) {
-                       mc_error("invalid query");
-                       g_strfreev(params);
-                       return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
-               }
+               mc_retvm_if((!params[2] || !params[3] || !params[4] || !params[5]),
+                               MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query");
 
                mc_safe_strtoi(params[2], &i_value);
                mc_safe_strtoull(params[3], &llu_value);
@@ -689,21 +677,13 @@ int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size)
                                __replace_null(params[14]), __replace_null(params[15]));
 
        } else if (strncmp(MC_DB_CMD_UPDATE_SHUFFLE, params[0], strlen(MC_DB_CMD_UPDATE_SHUFFLE)) == 0) {
-               if (!params[2]) {
-                       mc_error("invalid query");
-                       g_strfreev(params);
-                       return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
-               }
+               mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query");
 
                mc_safe_strtoi(params[2], &i_value);
                sql_str = sqlite3_mprintf("UPDATE %q SET shuffle_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]);
 
        } else if (strncmp(MC_DB_CMD_UPDATE_REPEAT, params[0], strlen(MC_DB_CMD_UPDATE_REPEAT)) == 0) {
-               if (!params[2]) {
-                       mc_error("invalid query");
-                       g_strfreev(params);
-                       return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
-               }
+               mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query");
 
                mc_safe_strtoi(params[2], &i_value);
                sql_str = sqlite3_mprintf("UPDATE %q SET repeat_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]);
@@ -713,11 +693,7 @@ int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size)
 
 
        } else if (strncmp(MC_DB_CMD_ADD_PLAYLIST, params[0], strlen(MC_DB_CMD_ADD_PLAYLIST)) == 0) {
-               if (!params[2]) {
-                       mc_error("invalid query");
-                       g_strfreev(params);
-                       return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
-               }
+               mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query");
 
                sql_str = sqlite3_mprintf("INSERT INTO %q(server_name, playlist_name) VALUES (%Q, %Q)", MC_DB_TABLE_PLAYLIST, params[1], params[2]);
 
@@ -728,19 +704,12 @@ int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size)
                int total_query_len = 0;
                int i = 0;
 
-               if (!params[2] || !params[3] || !params[4]) {
-                       mc_error("invalid query");
-                       g_strfreev(params);
-                       return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
-               }
+               mc_retvm_if((!params[2] || !params[3] || !params[4]),
+                                       MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query");
 
                mc_safe_strtoi(params[3], &i_value);
                bundle = bundle_decode((bundle_raw *)params[4], i_value);
-               if (!bundle) {
-                       mc_error("invalid bundle_data");
-                       g_strfreev(params);
-                       return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
-               }
+               mc_retvm_if(!bundle, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid bundle_data");
 
                mc_debug("bundle item count [%d]", bundle_get_count(bundle));
 
@@ -753,7 +722,6 @@ int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size)
                list_len = g_list_length(query_list);
                if (list_len < 3) {
                        mc_error("invalid query_list len [%d]", list_len);
-                       g_strfreev(params);
                        return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
                }
 
@@ -783,11 +751,8 @@ int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size)
                        sql_str = sqlite3_mprintf("UPDATE %q SET icon_uri=NULL WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, params[1]);
 
        } else if (strncmp(MC_DB_CMD_UPDATE_ABILITY, params[0], strlen(MC_DB_CMD_UPDATE_ABILITY)) == 0) {
-               if (!params[2] || !params[3]) {
-                       mc_error("invalid query");
-                       g_strfreev(params);
-                       return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
-               }
+               mc_retvm_if((!params[2] || !params[3]),
+                                       MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query");
 
                mc_safe_strtoull(params[2], &llu_value);
                mc_safe_strtoull(params[3], &llu_value2);
@@ -795,57 +760,36 @@ int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size)
                sql_str = sqlite3_mprintf("UPDATE %q SET ability_decided=%llu, ability_supported=%llu WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, llu_value, llu_value2, params[1]);
 
        } else if (strncmp(MC_DB_CMD_REMOVE_PLAYLIST, params[0], strlen(MC_DB_CMD_REMOVE_PLAYLIST)) == 0) {
-               if (!params[2]) {
-                       mc_error("invalid query");
-                       g_strfreev(params);
-                       return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
-               }
+               mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query");
 
                sql_str = sqlite3_mprintf("DELETE FROM %q WHERE server_name=%Q and playlist_name=%Q", MC_DB_TABLE_PLAYLIST, params[1], params[2]);
 
        } else if (strncmp(MC_DB_CMD_UPDATE_SUBTITLES, params[0], strlen(MC_DB_CMD_UPDATE_SUBTITLES)) == 0) {
-               if (!params[2]) {
-                       mc_error("invalid query");
-                       g_strfreev(params);
-                       return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
-               }
+               mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query");
 
                mc_safe_strtoi(params[2], &i_value);
                sql_str = sqlite3_mprintf("UPDATE %q SET subtitles_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]);
 
        } else if (strncmp(MC_DB_CMD_UPDATE_DISPLAY_MODE, params[0], strlen(MC_DB_CMD_UPDATE_DISPLAY_MODE)) == 0) {
-               if (!params[2]) {
-                       mc_error("invalid query");
-                       g_strfreev(params);
-                       return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
-               }
+               mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query");
 
                mc_safe_strtoi(params[2], &i_value);
                sql_str = sqlite3_mprintf("UPDATE %q SET display_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]);
 
        } else if (strncmp(MC_DB_CMD_UPDATE_DISPLAY_ROTATION, params[0], strlen(MC_DB_CMD_UPDATE_DISPLAY_ROTATION)) == 0) {
-               if (!params[2]) {
-                       mc_error("invalid query");
-                       g_strfreev(params);
-                       return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
-               }
+               mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query");
 
                mc_safe_strtoi(params[2], &i_value);
                sql_str = sqlite3_mprintf("UPDATE %q SET display_rotation=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]);
 
        } else if (strncmp(MC_DB_CMD_UPDATE_360, params[0], strlen(MC_DB_CMD_UPDATE_360)) == 0) {
-               if (!params[2]) {
-                       mc_error("invalid query");
-                       g_strfreev(params);
-                       return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
-               }
+               mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query");
 
                mc_safe_strtoi(params[2], &i_value);
                sql_str = sqlite3_mprintf("UPDATE %q SET spherical_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]);
 
        } else {
                mc_error("invalid request [%s]", params[0]);
-               g_strfreev(params);
                return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
        }
 
@@ -880,6 +824,22 @@ int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size)
                ret = MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY;
        }
 
+       return ret;
+}
+
+int mc_db_request(uid_t uid, const char *data, int data_size)
+{
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       gchar **params = NULL;
+
+       mc_retvm_if(!data, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid data");
+       mc_retvm_if(data_size <= 0 , MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid data_size");
+
+       params = g_strsplit(data, MC_STRING_DELIMITER, 0);
+       mc_retvm_if(!params, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "fail to parsing query");
+
+       ret = __parse_and_update_db(uid, params);
+
        g_strfreev(params);
 
        return ret;
index 394aa119850522d8068a851b4312719cc6ce94b8..920f8d91812a0e82533c81266c604af82301d180 100644 (file)
@@ -608,7 +608,7 @@ static gboolean __mc_service_process(gpointer data)
                        send_msg = MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
                        break;
                }
-               send_msg = mc_db_parse_and_update_db(request_msg->uid, request_msg->msg, request_msg->msg_size);
+               send_msg = mc_db_request(request_msg->uid, request_msg->msg, request_msg->msg_size);
                break;
 
        case MC_MSG_CLIENT_SET: