mc_search_item_s *search_item = NULL;
bundle * bundle_data = NULL;
char *bundle_str = NULL;
+ char *key_str = NULL;
char *val_str = NULL;
mc_retvm_if(mc_search == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Search is NULL");
for (idx = 0; idx < length; idx++) {
search_item = (mc_search_item_s*)g_list_nth_data(mc_search->search_list, idx);
- if (search_item == NULL) {
+ if (!search_item) {
mc_error("Invalid item [%d]", idx);
ret = MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER;
goto ERROR;
}
- if (search_item->search_keyword == NULL) {
+ if (!MC_STRING_VALID(search_item->search_keyword) && (search_item->category != MC_SEARCH_NO_CATEGORY)) {
mc_error("Invalid search_keyword [%d]", idx);
ret = MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER;
goto ERROR;
}
- if (search_item->data != NULL) {
- ret = mc_util_bundle_to_string(search_item->data, &bundle_str);
- if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
- mc_error("Error when encode bundle [%d][%d]", ret, idx);
- goto ERROR;
- }
+ ret = mc_util_bundle_to_string(search_item->data, &bundle_str);
+ if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
+ mc_error("Error when encode bundle [%d][%d]", ret, idx);
+ goto ERROR;
}
- /*set content_type, category, bundle_size, bundle */
- if (bundle_str != NULL) {
- val_str = g_strdup_printf("%d%s%d%s%s",
- search_item->content_type, MC_STRING_DELIMITER,
- search_item->category, MC_STRING_DELIMITER,
- bundle_str);
- } else {
- val_str = g_strdup_printf("%d%s%d%s%d",
- search_item->content_type, MC_STRING_DELIMITER,
- search_item->category, MC_STRING_DELIMITER,
- 0);
- }
+ /*set index */
+ key_str = g_strdup_printf("%d", idx);
+
+ /*set content_type, category, keyword, bundle_size, bundle */
+ val_str = g_strdup_printf("%d%s%d%s%s%s%s",
+ search_item->content_type, MC_STRING_DELIMITER,
+ search_item->category, MC_STRING_DELIMITER,
+ search_item->search_keyword, MC_STRING_DELIMITER,
+ bundle_str);
MC_SAFE_FREE(bundle_str);
- mc_secure_debug("[%d][%d][%s][%s]", idx, length, search_item->search_keyword, val_str);
+ mc_secure_debug("[%d][%d][%s][%s]", idx, length, key_str, val_str);
- if (val_str == NULL) {
+ if (!key_str || !val_str) {
mc_error("fail to make val_str [%d]", idx);
ret = MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY;
goto ERROR;
}
- /*key - keyword, val - val_str (content_type, category, bundle_size, bundle)*/
- ret = bundle_add_str(bundle_data, search_item->search_keyword, val_str);
- MC_SAFE_FREE(val_str);
+ /*key - index, val - val_str (content_type, category, keyword, bundle_size, bundle)*/
+ ret = bundle_add_str(bundle_data, key_str, val_str);
if (ret != BUNDLE_ERROR_NONE) {
mc_error("Error bundle_add_str [%d][%d]", ret, idx);
ret = MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
goto ERROR;
}
+ MC_SAFE_FREE(key_str);
+ MC_SAFE_FREE(val_str);
}
*res_bundle = bundle_data;
ERROR:
bundle_free(bundle_data);
+ MC_SAFE_FREE(key_str);
+ MC_SAFE_FREE(val_str);
return ret;
}
g_strfreev(params);
}
-void _search_cb(const char *key, const int type, const bundle_keyval_t *kv, void *user_data)
+static void __search_cb(const char *key, const int type, const bundle_keyval_t *kv, void *user_data)
{
void *basic_val = NULL;
size_t basic_size = 0;
gchar **params = NULL;
int content_type = 0;
int category = 0;
+ char *keyword = NULL;
int bundle_size = 0;
bundle *bundle_data = NULL;
GList **mc_search = (GList**)user_data;
bundle_keyval_get_basic_val((bundle_keyval_t *)kv, &basic_val, &basic_size);
- mc_secure_debug("Key [%s], Type [%d], basic_val [%s]", key, type, (char *)basic_val);
+ mc_secure_debug("key [%s], type [%d], basic_val [%s]", key, type, (char *)basic_val);
params = g_strsplit(basic_val, MC_STRING_DELIMITER, 0);
mc_retm_if(params == NULL, "invalid search data");
}
if (mc_safe_strtoi(params[1], &category) != MEDIA_CONTROLLER_ERROR_NONE) {
- mc_error("Error get content_type");
+ mc_error("Error get category");
g_strfreev(params);
return;
}
- if (mc_safe_strtoi(params[2], &bundle_size) != MEDIA_CONTROLLER_ERROR_NONE) {
+ if (mc_safe_strtoi(params[3], &bundle_size) != MEDIA_CONTROLLER_ERROR_NONE) {
mc_error("Error get bundle_size");
g_strfreev(params);
return;
}
- mc_secure_debug("content_type [%d], category [%d], bundle_size [%d]", content_type, category, bundle_size);
+ keyword = g_strdup(_mc_util_replace_null(params[2]));
- if (bundle_size > 0) {
- bundle_data = bundle_decode((bundle_raw *)params[3], bundle_size);
- }
+ mc_secure_debug("content_type [%d], category [%d], keyword[%s] bundle_size [%d]", content_type, category, keyword, bundle_size);
+
+ if (bundle_size > 0)
+ bundle_data = bundle_decode((bundle_raw *)params[4], bundle_size);
g_strfreev(params);
mc_search_item_s *search_item = (mc_search_item_s*)calloc(1, sizeof(mc_search_item_s));
if (search_item == NULL) {
mc_error("Error OUT_OF_MEMORY");
+ MC_SAFE_FREE(keyword);
bundle_free(bundle_data);
return;
}
search_item->content_type = content_type;
search_item->category = category;
- search_item->search_keyword = g_strdup(key);
+ search_item->search_keyword = keyword;
search_item->data = bundle_dup(bundle_data);
if (bundle_data != NULL)
return;
}
- bundle_foreach(bundle_data, _search_cb, &mc_search->search_list);
+ bundle_foreach(bundle_data, __search_cb, &mc_search->search_list);
bundle_free(bundle_data);