Fixed the prevent and invalid index
authorSunghyun Kwon <sh0701.kwon@samsung.com>
Sat, 19 Jan 2013 07:44:33 +0000 (16:44 +0900)
committerSunghyun Kwon <sh0701.kwon@samsung.com>
Sat, 19 Jan 2013 07:44:33 +0000 (16:44 +0900)
email-api/email-api-etc.c
email-api/email-api-mail.c
email-core/email-core-account.c
email-core/email-core-mail.c
email-core/email-storage/email-storage.c
email-daemon/main.c
packaging/email-service.spec

index 72a9e98..258dd6a 100755 (executable)
@@ -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;
index 6e18a51..fa17568 100755 (executable)
@@ -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) {
index 6ed5d1f..96e3c52 100755 (executable)
@@ -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;
                        }
index 61196d9..21a7ff2 100755 (executable)
@@ -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);
index c56df87..44c2c15 100755 (executable)
@@ -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;
 
index 005513a..3790c2d 100755 (executable)
@@ -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) {
index 6982918..a68c1c3 100755 (executable)
@@ -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