summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSunghyun Kwon <sh0701.kwon@samsung.com>2013-01-19 16:44:33 +0900
committerSunghyun Kwon <sh0701.kwon@samsung.com>2013-01-19 16:44:33 +0900
commit1493dbdd2a71a396e84eebbb2119af3f63db044e (patch)
treec9cce985757579ab8aa4a1dec72ec5e22286c587
parentbdcb6e160907caff4ce2207d0073a151df741f1e (diff)
downloademail-service-1493dbdd2a71a396e84eebbb2119af3f63db044e.tar.gz
email-service-1493dbdd2a71a396e84eebbb2119af3f63db044e.tar.bz2
email-service-1493dbdd2a71a396e84eebbb2119af3f63db044e.zip
Fixed the prevent and invalid index
-rwxr-xr-xemail-api/email-api-etc.c2
-rwxr-xr-xemail-api/email-api-mail.c35
-rwxr-xr-xemail-core/email-core-account.c4
-rwxr-xr-xemail-core/email-core-mail.c2
-rwxr-xr-xemail-core/email-storage/email-storage.c3
-rwxr-xr-xemail-daemon/main.c53
-rwxr-xr-xpackaging/email-service.spec2
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("<dummy_from@nowhere.com>");
mail_table_data.full_address_to = strdup("<dummy_to@nowhere.com>");
- 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