static void __destroy_req_info(req_info_t *req_info)
{
if (req_info) {
- free(req_info->url);
+ NULL_CHECK_AND_FREE(req_info->url);
if (req_info->req_header && req_info->req_header_count > 0) {
int i = 0;
int count = req_info->req_header_count;
for (i = 0; i < count; i++) {
- free(req_info->req_header[i]);
+ NULL_CHECK_AND_FREE(req_info->req_header[i]);
req_info->req_header[i] = DA_NULL;
}
- free(req_info->req_header);
+ NULL_CHECK_AND_FREE(req_info->req_header);
req_info->req_header = DA_NULL;
req_info->req_header_count = 0;
}
- free(req_info->install_path);
- free(req_info->file_name);
- free(req_info->etag);
- free(req_info->temp_file_path);
- free(req_info->pkg_name);
+ NULL_CHECK_AND_FREE(req_info->install_path);
+ NULL_CHECK_AND_FREE(req_info->file_name);
+ NULL_CHECK_AND_FREE(req_info->etag);
+ NULL_CHECK_AND_FREE(req_info->temp_file_path);
+ NULL_CHECK_AND_FREE(req_info->pkg_name);
req_info->user_req_data = DA_NULL;
req_info->user_client_data = DA_NULL;
- free(req_info);
+ NULL_CHECK_AND_FREE(req_info);
}
}
void destroy_http_info(http_info_t *http_info)
{
if (http_info) {
- DA_LOGI("[TEST] location_url[%p]",http_info->location_url);
- free(http_info->location_url);
- free(http_info->proxy_addr);
- free(http_info->content_type_from_header);
- free(http_info->etag_from_header);
- free(http_info->file_name_from_header);
+ NULL_CHECK_AND_FREE(http_info->location_url);
+ NULL_CHECK_AND_FREE(http_info->proxy_addr);
+ NULL_CHECK_AND_FREE(http_info->content_type_from_header);
+ NULL_CHECK_AND_FREE(http_info->etag_from_header);
+ NULL_CHECK_AND_FREE(http_info->file_name_from_header);
if (http_info->http_msg_request) {
__destroy_http_msg_request(http_info->http_msg_request);
http_info->http_msg_request = DA_NULL;
http_info->content_len_from_header = 0;
http_info->total_size = 0;
http_info->error_code = 0;
- free(http_info);
+ NULL_CHECK_AND_FREE(http_info);
}
}
{
if (file_info) {
file_info->file_handle = DA_NULL;
- free(file_info->pure_file_name);
- free(file_info->extension);
- free(file_info->file_path);
- free(file_info->mime_type);
- free(file_info->buffer);
+ NULL_CHECK_AND_FREE(file_info->pure_file_name);
+ NULL_CHECK_AND_FREE(file_info->extension);
+ NULL_CHECK_AND_FREE(file_info->file_path);
+ NULL_CHECK_AND_FREE(file_info->mime_type);
+ NULL_CHECK_AND_FREE(file_info->buffer);
file_info->buffer_len = 0;
file_info->file_size = 0;
#ifdef _RAF_SUPPORT
#endif
file_info->bytes_written_to_file = 0;
file_info->is_updated = DA_FALSE;
- free(file_info);
+ NULL_CHECK_AND_FREE(file_info);
}
}
{
if (http_info) {
DA_LOGI("[TEST] location_url[%p]",http_info->location_url);
- free(http_info->location_url);
+ NULL_CHECK_AND_FREE(http_info->location_url);
http_info->location_url = DA_NULL;
- free(http_info->proxy_addr);
+ NULL_CHECK_AND_FREE(http_info->proxy_addr);
http_info->proxy_addr = DA_NULL;
- free(http_info->content_type_from_header);
+ NULL_CHECK_AND_FREE(http_info->content_type_from_header);
http_info->content_type_from_header = DA_NULL;
if (http_info->http_msg_response) {
__destroy_http_msg_response(http_info->http_msg_response);
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
+#include <curl/curl.h>
#include "download-agent-http-msg-handler.h"
#include "download-agent-debug.h"
DA_LOGV("It's NOT base64 encoded-word string");
}
- if(http_msg->curl)
+ if(http_msg->curl){
decoded_str = curl_easy_unescape(http_msg->curl, wanted_str, wanted_str_len, NULL);
+ }
+ else{
+ CURL* handle = curl_easy_init();
+ decoded_str = curl_easy_unescape(handle, wanted_str, wanted_str_len, NULL);
+ curl_easy_cleanup(handle);
+ }
/* If it is url encoded string */
if (decoded_str) {
+ char* file_name;
DA_SECURE_LOGD("Url decoded str = [%s]", decoded_str);
- free(wanted_str);
- wanted_str = decoded_str;
+ file_name = (char*)calloc(1, strlen(decoded_str) + 1);
+ strncpy(file_name, decoded_str, strlen(decoded_str));
+
+ NULL_CHECK_AND_FREE(wanted_str);
+ curl_free(decoded_str);
decoded_str = NULL;
+
+ *out_file_name = file_name;
+ return DA_TRUE;
}
else{
DA_LOGE("Fail to url decode.");
- free(wanted_str);
- wanted_str = NULL;
+ NULL_CHECK_AND_FREE(wanted_str);
+ *out_file_name = NULL;
return DA_FALSE;
}
- *out_file_name = wanted_str;
-
- DA_SECURE_LOGI("out_file_name = [%s]", *out_file_name);
- return DA_TRUE;
} else {
DA_LOGE("Not matched \" !");
return DA_FALSE;