Fix the prevent issue
[platform/core/connectivity/bluetooth-agent.git] / map-agent / bluetooth_map_email.c
index 90a8d65..745a93a 100644 (file)
@@ -80,7 +80,7 @@ static void __bt_map_parse_moved_mails(char *inbuf, int *from_box_id,
        gchar **outer_tok;
        char delimiter[2] = { 0x01, 0x00 };
        outer_tok = g_strsplit_set(inbuf, delimiter, -1);
-       if (outer_tok == NULL ) {
+       if (outer_tok == NULL) {
                ERR("outer_tok == NULL");
                return;
        }
@@ -186,13 +186,14 @@ static void __bt_email_subscription_callback(GDBusConnection *connection,
                }
 
                handle = _bt_add_id(mailid, BT_MAP_ID_EMAIL);
-               if (mailbox->mailbox_type == EMAIL_MAILBOX_TYPE_INBOX) {
-                       _bt_mns_client_event_notify("NewMessage", handle,
-                                                               "TELECOM/MSG/INBOX", "",
-                                                               "EMAIL");
-               }
-               if (mailbox)
+               if (mailbox) {
+                       if (mailbox->mailbox_type == EMAIL_MAILBOX_TYPE_INBOX) {
+                               _bt_mns_client_event_notify("NewMessage", handle,
+                                               "TELECOM/MSG/INBOX", "",
+                                               "EMAIL");
+                       }
                        email_free_mailbox(&mailbox, 1);
+               }
 
        } else if (subtype == NOTI_MAIL_MOVE_FINISH) {
                /* Received values from Signal*/
@@ -281,10 +282,9 @@ static void __bt_email_subscription_callback(GDBusConnection *connection,
                                mail_ids = g_list_next(mail_ids);
                        }
                }
-               if (mailbox_to)
-                       email_free_mailbox(&mailbox_to, 1);
-               if (mailbox_from)
-                       email_free_mailbox(&mailbox_from, 1);
+
+               email_free_mailbox(&mailbox_to, 1);
+               email_free_mailbox(&mailbox_from, 1);
        }
 }
 
@@ -463,7 +463,10 @@ static message_info_t *__bt_email_info_get(email_mail_list_item_t *email_struct,
                email_info->recipient_name = g_strdup(mail_data->alias_recipient);
        }
 
-       email_info->recipient_addressing = g_strdup(mail_data->email_address_recipient);
+       if (mail_data->email_address_recipient) {
+               g_free(email_info->recipient_addressing);
+               email_info->recipient_addressing = g_strdup(mail_data->email_address_recipient);
+       }
 
        return email_info;
 }
@@ -487,13 +490,12 @@ static gboolean __bt_map_email_compare_folders(char *alias, char *folder)
                map_folder = "OUTBOX";
        } else if (!g_ascii_strncasecmp(alias, "[gmail]", strlen("[gmail]"))) {
                DBG("GMAIL Folders");
-               if (!g_ascii_strncasecmp(alias, "[Gmail]/Drafts", strlen("[Gmail]/Drafts"))) {
+               if (!g_ascii_strncasecmp(alias, "[Gmail]/Drafts", strlen("[Gmail]/Drafts")))
                        map_folder = "DRAFT";
-               } else if (!g_ascii_strncasecmp(alias, "[Gmail]/Sent", strlen("[Gmail]/Sent"))) {
+               else if (!g_ascii_strncasecmp(alias, "[Gmail]/Sent", strlen("[Gmail]/Sent")))
                        map_folder = "SENT";
-               } else if (!g_ascii_strncasecmp(alias, "[Gmail]/Trash", strlen("[Gmail]/Trash"))) {
+               else if (!g_ascii_strncasecmp(alias, "[Gmail]/Trash", strlen("[Gmail]/Trash")))
                        map_folder = "DELETED";
-               }
        }
 
        DBG("Equivalent MAP Folder for Alias: %s", map_folder);
@@ -742,15 +744,20 @@ static char *__bt_prepare_email_bmseg(email_mail_data_t *mail_data)
        if (body_file != NULL) {
                fseek(body_file, 0, SEEK_END);
                email_size = ftell(body_file);
+               if (email_size <= 0) {
+                       ERR("email_size is not a positive number");
+                       g_string_free(msg, TRUE);
+                       fclose(body_file);
+                       return NULL;
+               }
                rewind(body_file);
 
-               buf = (char *)g_malloc0(sizeof(char) * email_size);
+               buf = (char *)g_malloc0(sizeof(char) * (email_size + 1));
                read_size = fread(buf, 1, email_size, body_file);
                fclose(body_file);
                DBG("MESSAGE: [%s]", buf);
                if (read_size != email_size) {
                        ERR("Unequal Read size");
-                       email_free_mail_data(&mail_data, 1);
                        g_string_free(msg, TRUE);
                        g_free(buf);
                        return NULL;