From 1493dbdd2a71a396e84eebbb2119af3f63db044e Mon Sep 17 00:00:00 2001 From: Sunghyun Kwon Date: Sat, 19 Jan 2013 16:44:33 +0900 Subject: [PATCH] Fixed the prevent and invalid index --- email-api/email-api-etc.c | 2 +- email-api/email-api-mail.c | 35 ++++++++++++++++++--- email-core/email-core-account.c | 4 ++- email-core/email-core-mail.c | 2 +- email-core/email-storage/email-storage.c | 3 +- email-daemon/main.c | 53 +++++++++++++++++--------------- packaging/email-service.spec | 2 +- 7 files changed, 66 insertions(+), 35 deletions(-) diff --git a/email-api/email-api-etc.c b/email-api/email-api-etc.c index 72a9e98..258dd6a 100755 --- a/email-api/email-api-etc.c +++ b/email-api/email-api-etc.c @@ -130,7 +130,7 @@ EXPORT_API int email_write_mime_file(email_mail_data_t *input_mail_data, email_a } attachment_data_list_stream = em_convert_attachment_data_to_byte_stream(input_attachment_data, input_attachment_count, &size); - if (!emipc_add_dynamic_parameter(hAPI, ePARAMETER_IN, attachment_data_list_stream, size)) { + if ((size > 0) && !emipc_add_dynamic_parameter(hAPI, ePARAMETER_IN, attachment_data_list_stream, size)) { EM_DEBUG_EXCEPTION("emipc_add_dynamic_parameter failed"); err = EMAIL_ERROR_OUT_OF_MEMORY; goto FINISH_OFF; diff --git a/email-api/email-api-mail.c b/email-api/email-api-mail.c index 6e18a51..fa17568 100755 --- a/email-api/email-api-mail.c +++ b/email-api/email-api-mail.c @@ -40,6 +40,7 @@ #include "email-core-utils.h" #include "email-core-mail.h" #include "email-core-smtp.h" +#include "email-core-account.h" #include "email-core-task-manager.h" #include "email-storage.h" #include "email-utilities.h" @@ -189,23 +190,46 @@ EXPORT_API int email_add_read_receipt(int input_read_mail_id, int *output_receip } - +#define TMP_BODY_PATH "/tmp/UTF-8" int email_create_db_full() { int mailbox_index, mail_index, mailbox_count, mail_slot_size; + int account_id = 0; emstorage_mail_tbl_t mail_table_data = {0}; email_mailbox_t *mailbox_list = NULL; int err = EMAIL_ERROR_NONE; + int i = 0; + FILE *body_file = NULL; if ( (err = email_open_db()) != EMAIL_ERROR_NONE) { EM_DEBUG_EXCEPTION("email_open_db failed [%d]", err); return err; } + if ((err = emcore_load_default_account_id(&account_id)) != EMAIL_ERROR_NONE) { + EM_DEBUG_EXCEPTION("emcore_load_default_account_id failed : [%d]", err); + goto FINISH_OFF; + } + + body_file = fopen(TMP_BODY_PATH, "w"); + if (body_file == NULL) { + EM_DEBUG_EXCEPTION("fopen failed"); + err = EMAIL_ERROR_SYSTEM_FAILURE; + goto FINISH_OFF; + } + + for (i = 0; i < 10; i++) + fprintf(body_file, "Dummy test. [line:%d]\n", i); + + + fflush(body_file); + mail_table_data.subject = (char*) em_malloc(50); mail_table_data.full_address_from = strdup(""); mail_table_data.full_address_to = strdup(""); - mail_table_data.account_id =1; + mail_table_data.account_id = account_id; + mail_table_data.file_path_plain = strdup(TMP_BODY_PATH); + mail_table_data.body_download_status = 1; if( (err = email_get_mailbox_list_ex(1, -1, 0, &mailbox_list, &mailbox_count)) < EMAIL_ERROR_NONE) { EM_DEBUG_EXCEPTION("email_get_mailbox_list_ex failed [%d]", err); @@ -230,6 +254,8 @@ FINISH_OFF: if ( (err = email_close_db()) != EMAIL_ERROR_NONE) { EM_DEBUG_EXCEPTION("email_close_db failed [%d]", err); } + + fclose(body_file); if(mailbox_list) email_free_mailbox(&mailbox_list, mailbox_count); @@ -287,15 +313,14 @@ EXPORT_API int email_update_mail(email_mail_data_t *input_mail_data, email_attac /* email_attachment_data_t */ attachment_data_list_stream = em_convert_attachment_data_to_byte_stream(input_attachment_data_list, input_attachment_count, &size); - - if(!emipc_add_dynamic_parameter(hAPI, ePARAMETER_IN, attachment_data_list_stream, size)) { + if ((size > 0) && !emipc_add_dynamic_parameter(hAPI, ePARAMETER_IN, attachment_data_list_stream, size)) { EM_DEBUG_EXCEPTION("emipc_add_dynamic_parameter failed"); err = EMAIL_ERROR_OUT_OF_MEMORY; goto FINISH_OFF; } /* email_meeting_request_t */ - if ( input_mail_data->meeting_request_status != EMAIL_MAIL_TYPE_NORMAL ) { + if (input_mail_data->meeting_request_status != EMAIL_MAIL_TYPE_NORMAL) { meeting_request_stream = em_convert_meeting_req_to_byte_stream(input_meeting_request, &size); if(!meeting_request_stream) { diff --git a/email-core/email-core-account.c b/email-core/email-core-account.c index 6ed5d1f..96e3c52 100755 --- a/email-core/email-core-account.c +++ b/email-core/email-core-account.c @@ -632,8 +632,10 @@ INTERNAL_FUNC int emcore_init_account_reference() /* memset(accounts + i, 0x00, sizeof(email_account_t)) */ *p = (email_account_list_t*) em_malloc(sizeof(email_account_list_t)); - if (!(*p)) { + if (!(*p)) { /*prevent 26223*/ EM_DEBUG_EXCEPTION("malloc failed..."); + emcore_free_account(account); + EM_SAFE_FREE(account); err = EMAIL_ERROR_OUT_OF_MEMORY; goto FINISH_OFF; } diff --git a/email-core/email-core-mail.c b/email-core/email-core-mail.c index 61196d9..21a7ff2 100755 --- a/email-core/email-core-mail.c +++ b/email-core/email-core-mail.c @@ -2983,7 +2983,7 @@ INTERNAL_FUNC int emcore_download_body_multi_sections_bulk(void *mail_stream, in else cnt_info->grab_type = GRAB_TYPE_TEXT; - int uid = atoi(s_uid); + int uid = s_uid? atoi(s_uid):0; /*prevent 39118*/ /* set sparep(member of BODY) memory free function */ mail_parameters(stream, SET_FREEBODYSPAREP, emcore_free_body_sharep); diff --git a/email-core/email-storage/email-storage.c b/email-core/email-storage/email-storage.c index c56df87..44c2c15 100755 --- a/email-core/email-storage/email-storage.c +++ b/email-core/email-storage/email-storage.c @@ -8176,14 +8176,13 @@ INTERNAL_FUNC int emstorage_change_mail_field(int mail_id, email_mail_change_typ , mail_id); move_flag = 1; - + emstorage_free_mailbox(&mailbox_tbl, 1, NULL); /*prevent 26251*/ EM_DEBUG_LOG("Query [%s]", sql_query_string); EMSTORAGE_PROTECTED_FUNC_CALL(sqlite3_prepare_v2(local_db_handle, sql_query_string, EM_SAFE_STRLEN(sql_query_string), &hStmt, NULL), rc); EM_DEBUG_DB_EXEC((SQLITE_OK != rc), {error = EMAIL_ERROR_DB_FAILURE;goto FINISH_OFF; }, ("SQL(%s) sqlite3_prepare fail:(%d) %s", sql_query_string, rc, sqlite3_errmsg(local_db_handle))); - emstorage_free_mailbox(&mailbox_tbl, 1, NULL); } break; diff --git a/email-daemon/main.c b/email-daemon/main.c index 005513a..3790c2d 100755 --- a/email-daemon/main.c +++ b/email-daemon/main.c @@ -1145,9 +1145,10 @@ void stb_add_mail(HIPC_API a_hAPI) goto FINISH_OFF; } } + + param_index++; } - param_index++; /* meeting request */ EM_DEBUG_LOG("email_meeting_request_t"); @@ -1223,23 +1224,24 @@ void stb_update_mail(HIPC_API a_hAPI) em_convert_byte_stream_to_mail_data(stream, buffer_size, &result_mail_data); } - buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index); - - EM_DEBUG_LOG("email_attachment_data_t buffer_size[%d]", buffer_size); + if (result_mail_data.attachment_count > 0) { + buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index); + EM_DEBUG_LOG("email_attachment_data_t buffer_size[%d]", buffer_size); - if(buffer_size > 0) { - char *stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index); - em_convert_byte_stream_to_attachment_data(stream, buffer_size, &result_attachment_data, &result_attachment_data_count); + if(buffer_size > 0) { + char *stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index); + em_convert_byte_stream_to_attachment_data(stream, buffer_size, &result_attachment_data, &result_attachment_data_count); - EM_DEBUG_LOG("result_attachment_data_count[%d]", result_attachment_data_count); + EM_DEBUG_LOG("result_attachment_data_count[%d]", result_attachment_data_count); - if(result_attachment_data_count && !result_attachment_data) { - EM_DEBUG_EXCEPTION("em_convert_byte_stream_to_attachment_data failed"); - err = EMAIL_ERROR_ON_PARSING; - goto FINISH_OFF; + if(result_attachment_data_count && !result_attachment_data) { + EM_DEBUG_EXCEPTION("em_convert_byte_stream_to_attachment_data failed"); + err = EMAIL_ERROR_ON_PARSING; + goto FINISH_OFF; + } } + param_index++; } - param_index++; EM_DEBUG_LOG("email_meeting_request_t"); @@ -2443,23 +2445,26 @@ void stb_write_mime_file(HIPC_API a_hAPI) } /* attachment */ - buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index); - EM_DEBUG_LOG("email_attachment_data_t buffer_size[%d]", buffer_size); + if (result_mail_data.attachment_count > 0) { + buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index); + EM_DEBUG_LOG("email_attachment_data_t buffer_size[%d]", buffer_size); - if(buffer_size > 0) { - char *stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index); - em_convert_byte_stream_to_attachment_data(stream, buffer_size, &result_attachment_data, &result_attachment_data_count); + if(buffer_size > 0) { + char *stream = (char*) emipc_get_nth_parameter_data(a_hAPI, ePARAMETER_IN, param_index); + em_convert_byte_stream_to_attachment_data(stream, buffer_size, &result_attachment_data, &result_attachment_data_count); - EM_DEBUG_LOG("result_attachment_data_count[%d]", result_attachment_data_count); + EM_DEBUG_LOG("result_attachment_data_count[%d]", result_attachment_data_count); - if(result_attachment_data_count && !result_attachment_data) { - EM_DEBUG_EXCEPTION("em_convert_byte_stream_to_attachment_data failed"); - err = EMAIL_ERROR_ON_PARSING; - goto FINISH_OFF; + if(result_attachment_data_count && !result_attachment_data) { + EM_DEBUG_EXCEPTION("em_convert_byte_stream_to_attachment_data failed"); + err = EMAIL_ERROR_ON_PARSING; + goto FINISH_OFF; + } } + + param_index++; } - param_index++; buffer_size = emipc_get_nth_parameter_length(a_hAPI, ePARAMETER_IN, param_index); if (buffer_size > 0) { diff --git a/packaging/email-service.spec b/packaging/email-service.spec index 6982918..a68c1c3 100755 --- a/packaging/email-service.spec +++ b/packaging/email-service.spec @@ -1,6 +1,6 @@ Name: email-service Summary: E-mail Framework Middleware package -Version: 0.10.79 +Version: 0.10.80 Release: 1 Group: System/Libraries License: TBD -- 2.7.4