int mc_db_update_playback_info(const char *server_name, const media_controller_playback_s playback)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *_query = NULL;
char *sql_str = NULL;
mc_retvm_if(!server_name, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid server_name");
- _query = sqlite3_mprintf("UPDATE '%q' SET playback_state=%d, playback_position=%llu, playlist_name=%Q, playlist_index=%Q, playback_content_type=%d, age_rating=%d;",
- server_name, playback.state, playback.position, playback.playlist_name, playback.index, playback.content_type, playback.age_rating);
-
- sql_str = g_strdup_printf("%s%s%s%s%d%s%s", MC_DB_CMD_UPDATE_PLAYBACK, MC_STRING_DELIMITER, server_name, MC_STRING_DELIMITER, playback.state, MC_STRING_DELIMITER, _query);
+ if (MC_STRING_VALID(playback.playlist_name) && MC_STRING_VALID(playback.index)) {
+ sql_str = g_strdup_printf("%s%s%s%s%d%s%llu%s%d%s%d%s%s%s%s", MC_DB_CMD_UPDATE_PLAYBACK, MC_STRING_DELIMITER,
+ server_name, MC_STRING_DELIMITER,
+ playback.state, MC_STRING_DELIMITER,
+ playback.position, MC_STRING_DELIMITER,
+ playback.content_type, MC_STRING_DELIMITER,
+ playback.age_rating, MC_STRING_DELIMITER,
+ playback.playlist_name, MC_STRING_DELIMITER,
+ playback.index);
+ } else {
+ sql_str = g_strdup_printf("%s%s%s%s%d%s%llu%s%d%s%d", MC_DB_CMD_UPDATE_PLAYBACK, MC_STRING_DELIMITER,
+ server_name, MC_STRING_DELIMITER,
+ playback.state, MC_STRING_DELIMITER,
+ playback.position, MC_STRING_DELIMITER,
+ playback.content_type, MC_STRING_DELIMITER,
+ playback.age_rating);
+ }
ret = __mc_db_update_db(MC_PRIV_TYPE_SERVER, sql_str);
- SQLITE3_SAFE_FREE(_query);
MC_SAFE_FREE(sql_str);
return ret;
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;
void* _db_handle = NULL;
gboolean is_query_from_client = FALSE;
}
if (strncmp(MC_DB_CMD_UPDATE_PLAYBACK, params[0], strlen(MC_DB_CMD_UPDATE_PLAYBACK)) == 0) {
- sql_str = params[3];
- is_query_from_client = TRUE;
+ if (params[2] == NULL || params[3] == NULL || params[4] == NULL || params[5] == NULL) {
+ mc_error("invalid query");
+ ret = MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
+ goto ERROR;
+ }
+
+ mc_safe_strtoi(params[2], &i_value);
+ mc_safe_strtoull(params[3], &llu_value);
+ mc_safe_strtoi(params[4], &i_value_1);
+ mc_safe_strtoi(params[5], &i_value_2);
+
+ if (MC_STRING_VALID(params[6]) && MC_STRING_VALID(params[7])) {
+ sql_str = sqlite3_mprintf("UPDATE '%q' SET playback_state=%d, playback_position=%llu, playback_content_type=%d, age_rating=%d, playlist_name=%Q, playlist_index=%Q;",
+ params[1], i_value, llu_value, i_value_1, i_value_2, params[6], params[7]);
+ } else {
+ sql_str = sqlite3_mprintf("UPDATE '%q' SET playback_state=%d, playback_position=%llu, playback_content_type=%d, age_rating=%d, playlist_name=NULL, playlist_index=NULL;",
+ params[1], i_value, llu_value, i_value_1, i_value_2);
+ }
} else if (strncmp(MC_DB_CMD_UPDATE_META, params[0], strlen(MC_DB_CMD_UPDATE_META)) == 0) {
sql_str = params[1];