fix prevent issues 63/44963/2
authorGukhwan Cho <gh78.cho@samsung.com>
Wed, 3 Jun 2015 00:57:06 +0000 (09:57 +0900)
committerMyungHoon Chae <mhoon.chae@samsung.com>
Tue, 4 Aug 2015 04:42:42 +0000 (21:42 -0700)
Change-Id: Icdb561fcb669f41baabd8fe0a6ddc38a5a8dd62f
Signed-off-by: Gukhwan Cho <gh78.cho@samsung.com>
53 files changed:
common/ctsvc_filter.c
common/ctsvc_inotify.c
common/ctsvc_query.c
common/ctsvc_record.h
common/ctsvc_record_addressbook.c
common/ctsvc_record_contact.c
common/ctsvc_record_group.c
common/ctsvc_record_my_profile.c
common/ctsvc_record_person.c
common/ctsvc_record_phonelog.c
common/ctsvc_record_result.c
common/ctsvc_record_sdn.c
common/ctsvc_record_speeddial.c
common/ctsvc_record_updated_info.c
common/ctsvc_vcard.c
common/ipc/ctsvc_ipc_marshal.c
native/ctsvc_db_access_control.c
native/ctsvc_db_plugin_activity.c
native/ctsvc_db_plugin_activity_photo.c
native/ctsvc_db_plugin_address.c
native/ctsvc_db_plugin_addressbook.c
native/ctsvc_db_plugin_company.c
native/ctsvc_db_plugin_contact.c
native/ctsvc_db_plugin_contact_helper.c
native/ctsvc_db_plugin_email.c
native/ctsvc_db_plugin_event.c
native/ctsvc_db_plugin_extension.c
native/ctsvc_db_plugin_group.c
native/ctsvc_db_plugin_grouprelation.c
native/ctsvc_db_plugin_image.c
native/ctsvc_db_plugin_messenger.c
native/ctsvc_db_plugin_my_profile.c
native/ctsvc_db_plugin_name.c
native/ctsvc_db_plugin_name_helper.c
native/ctsvc_db_plugin_nickname.c
native/ctsvc_db_plugin_note.c
native/ctsvc_db_plugin_number.c
native/ctsvc_db_plugin_person.c
native/ctsvc_db_plugin_person_helper.c
native/ctsvc_db_plugin_phonelog.c
native/ctsvc_db_plugin_profile.c
native/ctsvc_db_plugin_relationship.c
native/ctsvc_db_plugin_sdn.c
native/ctsvc_db_plugin_simple_contact.c
native/ctsvc_db_plugin_speeddial.c
native/ctsvc_db_plugin_url.c
native/ctsvc_db_query.c
native/ctsvc_normalize.c
native/ctsvc_notification.c
native/ctsvc_utils.c
server/ctsvc_server_bg.c
server/ctsvc_server_sim.c
server/ctsvc_server_utils.c

index 521ec5a..b7cf6c6 100644 (file)
@@ -139,6 +139,10 @@ static int __ctsvc_attribute_filter_create(ctsvc_composite_filter_s *com_filter,
        }
 
        filter = (ctsvc_attribute_filter_s *)calloc(1, sizeof(ctsvc_attribute_filter_s));
+       if (NULL == filter) {
+               CTS_ERR("calloc() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
        filter->filter_type = filter_type;
        filter->property_id = property_id;
        filter->match = match;
@@ -289,6 +293,10 @@ static int __ctsvc_attribute_filter_clone(ctsvc_attribute_filter_s *src, ctsvc_a
 {
        ctsvc_attribute_filter_s *out;
        out = (ctsvc_attribute_filter_s *)calloc(1, sizeof(ctsvc_attribute_filter_s));
+       if (NULL == out) {
+               CTS_ERR("calloc() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
        out->filter_type = src->filter_type;
        out->property_id = src->property_id;
        out->match = src->match;
index f1802b2..7959f8c 100644 (file)
@@ -102,17 +102,18 @@ static gboolean __ctsvc_inotify_gio_cb(GIOChannel *src, GIOCondition cond, gpoin
                        if (__noti_list)
                                __ctsvc_inotify_handle_callback(__noti_list, ie.wd, ie.mask);
 
-                       while (0 < ie.len) {
+                       while (0 != ie.len) {
                                ret = read(fd, name, (ie.len<sizeof(name))?ie.len:sizeof(name));
                                if (-1 == ret) {
                                        if (EINTR == errno)
                                                continue;
                                        else
-                                               break;
+                                               return TRUE;
                                }
-                               if (ie.len <= ret)
-                                       break;
-                               ie.len -= ret;
+                               if (ie.len < ret)
+                                       ie.len = 0;
+                               else
+                                       ie.len -= ret;
                        }
                }
                else {
@@ -123,7 +124,7 @@ static gboolean __ctsvc_inotify_gio_cb(GIOChannel *src, GIOCondition cond, gpoin
                                        if (EINTR == errno)
                                                continue;
                                        else
-                                               break;
+                                               return TRUE;
                                }
                                ret += read_size;
                        }
index 1ab8e0e..275a85e 100644 (file)
@@ -89,6 +89,10 @@ API int contacts_query_set_projection(contacts_query_h query, unsigned int prope
                free(query_s->projection);
 
        query_s->projection = calloc(count, sizeof(unsigned int));
+       if (NULL == query_s->projection) {
+               CTS_ERR("calloc() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
        memcpy(query_s->projection, property_ids, sizeof(unsigned int) * count);
        query_s->projection_count = count;
 
index 040d3e8..23c7ab2 100644 (file)
 #define __TIZEN_SOCIAL_CTSVC_RECORD_H__
 
 #define CTSVC_RECORD_INIT_BASE(base, type, cb, uri) do {\
-    (base)->r_type = (type);\
-    (base)->plugin_cbs = (cb);\
-    (base)->view_uri = (uri);\
-    (base)->property_max_count = 0;\
+       (base)->r_type = (type);\
+       (base)->plugin_cbs = (cb);\
+       (base)->view_uri = (uri);\
+       (base)->property_max_count = 0;\
 } while (0)
 
-#define CTSVC_RECORD_COPY_BASE(dest, src) do {\
-    (dest)->r_type = (src)->r_type;\
-    (dest)->plugin_cbs = (src)->plugin_cbs;\
-    (dest)->view_uri = (src)->view_uri;\
-    (dest)->property_max_count = (src)->property_max_count;\
-    (dest)->property_flag = (src)->property_flag;\
-    if ((src)->properties_flags) \
-    {\
-        (dest)->properties_flags  = calloc((dest)->property_max_count, sizeof(char));\
-               memcpy((dest)->properties_flags,(src)->properties_flags,sizeof(char)*(dest)->property_max_count);\
-    }\
-} while (0)
+static inline int ctsvc_record_copy_base(ctsvc_record_s *dest, ctsvc_record_s *src)
+{
+       dest->r_type = src->r_type;
+       dest->plugin_cbs = src->plugin_cbs;
+       dest->view_uri = src->view_uri;
+       dest->property_max_count = src->property_max_count;
+       dest->property_flag = src->property_flag;
+       if (src->properties_flags) {
+               dest->properties_flags = calloc(dest->property_max_count, sizeof(char));
+               if (NULL == dest->properties_flags) {
+                       CTS_ERR("calloc() Fail");
+                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+               }
+               if (dest->properties_flags) {
+                       memcpy(dest->properties_flags,src->properties_flags,sizeof(char)*dest->property_max_count);
+               }
+       }
+       return CONTACTS_ERROR_NONE;
+}
 
 #define CTSVC_RECORD_RESET_PROPERTY_FLAGS(base)do {\
-    if ((base)->properties_flags) \
-    {\
-        free((base)->properties_flags); \
-        (base)->property_max_count = 0;\
-        (base)->properties_flags = NULL;\
-        (base)->property_flag = 0;\
-    }\
+       if ((base)->properties_flags) \
+       {\
+               free((base)->properties_flags); \
+               (base)->property_max_count = 0;\
+               (base)->properties_flags = NULL;\
+               (base)->property_flag = 0;\
+       }\
 } while (0)
 
 int ctsvc_record_set_property_flag(ctsvc_record_s* _record, int property_id, contacts_property_flag_e flag);
index 5182c39..409d71f 100644 (file)
@@ -90,7 +90,12 @@ static int __ctsvc_addressbook_clone(contacts_record_h record, contacts_record_h
        RETVM_IF(NULL == dest, CONTACTS_ERROR_OUT_OF_MEMORY,
                        "Out of memory : calloc is Fail");
 
-       CTSVC_RECORD_COPY_BASE(&(dest->base), &(src->base));
+       int ret = ctsvc_record_copy_base(&(dest->base), &(src->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               free(dest);
+               return ret;
+       }
 
        dest->id = src->id;
        dest->account_id = src->account_id;
index f1751ae..e20ac29 100644 (file)
@@ -654,6 +654,11 @@ static int __ctsvc_activity_create(contacts_record_h *out_record)
                        "Out of memory : calloc is Fail");
 
        activity->photos = calloc(1, sizeof(ctsvc_list_s));
+       if (NULL == activity->photos) {
+               CTS_ERR("calloc() Fail");
+               free(activity);
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
        activity->photos->l_type = CTSVC_RECORD_ACTIVITY_PHOTO;
 
        *out_record = (contacts_record_h)activity;
@@ -1183,53 +1188,104 @@ static int __ctsvc_contact_create(contacts_record_h *out_record)
        RETVM_IF(NULL == contact, CONTACTS_ERROR_OUT_OF_MEMORY,
                        "Out of memory : calloc is Fail");
 
-       contact->name = calloc(1, sizeof(ctsvc_list_s));
-       contact->name->l_type = CTSVC_RECORD_NAME;
-
-       contact->company = calloc(1, sizeof(ctsvc_list_s));
-       contact->company->l_type = CTSVC_RECORD_COMPANY;
-
-       contact->note = calloc(1, sizeof(ctsvc_list_s));
-       contact->note->l_type = CTSVC_RECORD_NOTE;
-
-       contact->numbers = calloc(1, sizeof(ctsvc_list_s));
-       contact->numbers->l_type = CTSVC_RECORD_NUMBER;
-
-       contact->emails = calloc(1, sizeof(ctsvc_list_s));
-       contact->emails->l_type = CTSVC_RECORD_EMAIL;
-
-       contact->grouprelations = calloc(1, sizeof(ctsvc_list_s));
-       contact->grouprelations->l_type = CTSVC_RECORD_GROUP_RELATION;
-
-       contact->events = calloc(1, sizeof(ctsvc_list_s));
-       contact->events->l_type = CTSVC_RECORD_EVENT;
-
-       contact->messengers = calloc(1, sizeof(ctsvc_list_s));
-       contact->messengers->l_type = CTSVC_RECORD_MESSENGER;
-
-       contact->postal_addrs = calloc(1, sizeof(ctsvc_list_s));
-       contact->postal_addrs->l_type = CTSVC_RECORD_ADDRESS;
-
-       contact->urls = calloc(1, sizeof(ctsvc_list_s));
-       contact->urls->l_type = CTSVC_RECORD_URL;
-
-       contact->nicknames = calloc(1, sizeof(ctsvc_list_s));
-       contact->nicknames->l_type = CTSVC_RECORD_NICKNAME;
-
-       contact->profiles = calloc(1, sizeof(ctsvc_list_s));
-       contact->profiles->l_type = CTSVC_RECORD_PROFILE;
-
-       contact->relationships = calloc(1, sizeof(ctsvc_list_s));
-       contact->relationships->l_type = CTSVC_RECORD_RELATIONSHIP;
-
-       contact->images = calloc(1, sizeof(ctsvc_list_s));
-       contact->images->l_type = CTSVC_RECORD_IMAGE;
-
-       contact->extensions = calloc(1, sizeof(ctsvc_list_s));
-       contact->extensions->l_type = CTSVC_RECORD_EXTENSION;
-
-       *out_record = (contacts_record_h)contact;
-       return CONTACTS_ERROR_NONE;
+       do {
+               contact->name = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == contact->name)
+                       break;
+               contact->name->l_type = CTSVC_RECORD_NAME;
+
+               contact->company = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == contact->company)
+                       break;
+               contact->company->l_type = CTSVC_RECORD_COMPANY;
+
+               contact->note = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == contact->note)
+                       break;
+               contact->note->l_type = CTSVC_RECORD_NOTE;
+
+               contact->numbers = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == contact->numbers)
+                       break;
+               contact->numbers->l_type = CTSVC_RECORD_NUMBER;
+
+               contact->emails = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == contact->emails)
+                       break;
+               contact->emails->l_type = CTSVC_RECORD_EMAIL;
+
+               contact->grouprelations = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == contact->grouprelations)
+                       break;
+               contact->grouprelations->l_type = CTSVC_RECORD_GROUP_RELATION;
+
+               contact->events = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == contact->events)
+                       break;
+               contact->events->l_type = CTSVC_RECORD_EVENT;
+
+               contact->messengers = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == contact->messengers)
+                       break;
+               contact->messengers->l_type = CTSVC_RECORD_MESSENGER;
+
+               contact->postal_addrs = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == contact->postal_addrs)
+                       break;
+               contact->postal_addrs->l_type = CTSVC_RECORD_ADDRESS;
+
+               contact->urls = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == contact->urls)
+                       break;
+               contact->urls->l_type = CTSVC_RECORD_URL;
+
+               contact->nicknames = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == contact->nicknames)
+                       break;
+               contact->nicknames->l_type = CTSVC_RECORD_NICKNAME;
+
+               contact->profiles = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == contact->profiles)
+                       break;
+               contact->profiles->l_type = CTSVC_RECORD_PROFILE;
+
+               contact->relationships = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == contact->relationships)
+                       break;
+               contact->relationships->l_type = CTSVC_RECORD_RELATIONSHIP;
+
+               contact->images = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == contact->images)
+                       break;
+               contact->images->l_type = CTSVC_RECORD_IMAGE;
+
+               contact->extensions = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == contact->extensions)
+                       break;
+               contact->extensions->l_type = CTSVC_RECORD_EXTENSION;
+
+               *out_record = (contacts_record_h)contact;
+               return CONTACTS_ERROR_NONE;
+       } while (0);
+
+       CTS_ERR("calloc() Fail");
+       free(contact->extensions);
+       free(contact->images);
+       free(contact->relationships);
+       free(contact->profiles);
+       free(contact->nicknames);
+       free(contact->urls);
+       free(contact->postal_addrs);
+       free(contact->messengers);
+       free(contact->events);
+       free(contact->grouprelations);
+       free(contact->emails);
+       free(contact->numbers);
+       free(contact->note);
+       free(contact->company);
+       free(contact->name);
+       free(contact);
+       return CONTACTS_ERROR_OUT_OF_MEMORY;
 }
 
 static int __ctsvc_contact_destroy(contacts_record_h record, bool delete_child)
@@ -1935,6 +1991,7 @@ static int __ctsvc_email_set_int(contacts_record_h record, unsigned int property
        switch(property_id) {
        case CTSVC_PROPERTY_EMAIL_ID:
                email->id = value;
+               break;
        case CTSVC_PROPERTY_EMAIL_CONTACT_ID:
                RETVM_IF(0 < email->id, CONTACTS_ERROR_INVALID_PARAMETER,
                                "Invalid parameter : property_id(%d) is a read-only value (email)", property_id);
@@ -3946,7 +4003,12 @@ static int __ctsvc_contact_clone(contacts_record_h record, contacts_record_h *ou
        ctsvc_list_clone((contacts_list_h)src_data->extensions, (contacts_list_h*)&out_data->extensions);
        out_data->extensions->l_type = CTSVC_RECORD_EXTENSION;
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_contact_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
 
@@ -3975,7 +4037,12 @@ static int __ctsvc_activity_clone(contacts_record_h record, contacts_record_h *o
        ctsvc_list_clone((contacts_list_h)src_data->photos, (contacts_list_h*)&out_data->photos);
        out_data->photos->l_type = CTSVC_RECORD_ACTIVITY_PHOTO;
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_activity_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
@@ -3996,7 +4063,12 @@ static int __ctsvc_activity_photo_clone(contacts_record_h record, contacts_recor
        out_data->photo_url = SAFE_STRDUP(src_data->photo_url);
        out_data->sort_index = src_data->sort_index;
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_activity_photo_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
@@ -4025,7 +4097,12 @@ static int __ctsvc_address_clone(contacts_record_h record, contacts_record_h *ou
        out_data->extended = SAFE_STRDUP(src_data->extended);
        out_data->country = SAFE_STRDUP(src_data->country);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_address_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
@@ -4059,7 +4136,12 @@ static int __ctsvc_company_clone(contacts_record_h record, contacts_record_h *ou
        out_data->description = SAFE_STRDUP(src_data->description);
        out_data->phonetic_name = SAFE_STRDUP(src_data->phonetic_name);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_company_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
@@ -4082,7 +4164,12 @@ static int __ctsvc_email_clone(contacts_record_h record, contacts_record_h *out_
        out_data->label = SAFE_STRDUP(src_data->label);
        out_data->email_addr = SAFE_STRDUP(src_data->email_addr);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_email_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
@@ -4106,7 +4193,12 @@ static int __ctsvc_event_clone(contacts_record_h record, contacts_record_h *out_
        out_data->calendar_type = src_data->calendar_type;
        out_data->is_leap_month = src_data->is_leap_month;
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_event_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
@@ -4138,7 +4230,12 @@ static int __ctsvc_extension_clone(contacts_record_h record, contacts_record_h *
        out_data->data11 = SAFE_STRDUP(src_data->data11);
        out_data->data12 = SAFE_STRDUP(src_data->data12);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_extension_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
@@ -4159,7 +4256,12 @@ static int __ctsvc_group_relation_clone(contacts_record_h record, contacts_recor
        out_data->contact_id = src_data->contact_id;
        out_data->group_name = SAFE_STRDUP(src_data->group_name);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_group_relation_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
@@ -4181,7 +4283,12 @@ static int __ctsvc_messenger_clone(contacts_record_h record, contacts_record_h *
        out_data->label = SAFE_STRDUP(src_data->label);
        out_data->im_id = SAFE_STRDUP(src_data->im_id);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_messenger_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
@@ -4212,7 +4319,12 @@ static int __ctsvc_name_clone(contacts_record_h record, contacts_record_h *out_r
        out_data->lookup = SAFE_STRDUP(src_data->lookup);
        out_data->reverse_lookup = SAFE_STRDUP(src_data->reverse_lookup);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_name_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
@@ -4234,7 +4346,12 @@ static int __ctsvc_nickname_clone(contacts_record_h record, contacts_record_h *o
        out_data->label = SAFE_STRDUP(src_data->label);
        out_data->nickname = SAFE_STRDUP(src_data->nickname);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_nickname_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
@@ -4254,7 +4371,12 @@ static int __ctsvc_note_clone(contacts_record_h record, contacts_record_h *out_r
        out_data->contact_id = src_data->contact_id;
        out_data->note = SAFE_STRDUP(src_data->note);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_note_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
@@ -4278,7 +4400,12 @@ static int __ctsvc_number_clone(contacts_record_h record, contacts_record_h *out
        out_data->number = SAFE_STRDUP(src_data->number);
        out_data->lookup = SAFE_STRDUP(src_data->lookup);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_number_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
@@ -4306,7 +4433,12 @@ static int __ctsvc_profile_clone(contacts_record_h record, contacts_record_h *ou
        out_data->category = SAFE_STRDUP(src_data->category);
        out_data->extra_data = SAFE_STRDUP(src_data->extra_data);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_profile_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
 
@@ -4329,7 +4461,12 @@ static int __ctsvc_relationship_clone(contacts_record_h record, contacts_record_
        out_data->label = SAFE_STRDUP(src_data->label);
        out_data->name = SAFE_STRDUP(src_data->name);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_relationship_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
@@ -4355,7 +4492,12 @@ static int __ctsvc_image_clone(contacts_record_h record, contacts_record_h *out_
                __ctsvc_temp_image_hash_table_insert(src_data->path);
        out_data->path = SAFE_STRDUP(src_data->path);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_image_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
@@ -4387,7 +4529,12 @@ static int __ctsvc_simple_contact_clone(contacts_record_h record, contacts_recor
        out_data->message_alert = SAFE_STRDUP(src_data->message_alert);
        out_data->image_thumbnail_path = SAFE_STRDUP(src_data->image_thumbnail_path);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_simple_contact_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
@@ -4409,7 +4556,12 @@ static int __ctsvc_url_clone(contacts_record_h record, contacts_record_h *out_re
        out_data->label = SAFE_STRDUP(src_data->label);
        out_data->url = SAFE_STRDUP(src_data->url);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_url_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
index a3c2453..0a34140 100644 (file)
@@ -91,13 +91,14 @@ static int __ctsvc_group_destroy(contacts_record_h record, bool delete_child)
 
 static int __ctsvc_group_clone(contacts_record_h record, contacts_record_h *out_record)
 {
-    ctsvc_group_s *out_data = NULL;
-    ctsvc_group_s *src_data = NULL;
+       ctsvc_group_s *out_data = NULL;
+       ctsvc_group_s *src_data = NULL;
 
-    src_data = (ctsvc_group_s*)record;
-    out_data = calloc(1, sizeof(ctsvc_group_s));
-    RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
-                        "Out of memeory : calloc(ctsvc_group_s) Fail(%d)", CONTACTS_ERROR_OUT_OF_MEMORY);
+       src_data = (ctsvc_group_s*)record;
+       out_data = calloc(1, sizeof(ctsvc_group_s));
+       RETVM_IF(NULL == out_data, CONTACTS_ERROR_OUT_OF_MEMORY,
+               "Out of memeory : calloc(ctsvc_group_s) Fail(%d)",
+               CONTACTS_ERROR_OUT_OF_MEMORY);
 
        out_data->id = src_data->id;
        out_data->addressbook_id = src_data->addressbook_id;
@@ -109,7 +110,12 @@ static int __ctsvc_group_clone(contacts_record_h record, contacts_record_h *out_
        out_data->ringtone_path = SAFE_STRDUP(src_data->ringtone_path);
        out_data->image_thumbnail_path = SAFE_STRDUP(src_data->image_thumbnail_path);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_group_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
index 221bcff..4c488b6 100644 (file)
@@ -71,50 +71,98 @@ static int __ctsvc_my_profile_create(contacts_record_h *out_record)
        RETVM_IF(NULL == my_profile, CONTACTS_ERROR_OUT_OF_MEMORY,
                        "Out of memory : calloc is Fail");
 
-       my_profile->name = calloc(1, sizeof(ctsvc_list_s));
-       my_profile->name->l_type = CTSVC_RECORD_NAME;
-
-       my_profile->company = calloc(1, sizeof(ctsvc_list_s));
-       my_profile->company->l_type = CTSVC_RECORD_COMPANY;
-
-       my_profile->note = calloc(1, sizeof(ctsvc_list_s));
-       my_profile->note->l_type = CTSVC_RECORD_NOTE;
-
-       my_profile->numbers = calloc(1, sizeof(ctsvc_list_s));
-       my_profile->numbers->l_type = CTSVC_RECORD_NUMBER;
-
-       my_profile->emails = calloc(1, sizeof(ctsvc_list_s));
-       my_profile->emails->l_type = CTSVC_RECORD_EMAIL;
-
-       my_profile->events = calloc(1, sizeof(ctsvc_list_s));
-       my_profile->events->l_type = CTSVC_RECORD_EVENT;
-
-       my_profile->messengers = calloc(1, sizeof(ctsvc_list_s));
-       my_profile->messengers->l_type = CTSVC_RECORD_MESSENGER;
-
-       my_profile->postal_addrs = calloc(1, sizeof(ctsvc_list_s));
-       my_profile->postal_addrs->l_type = CTSVC_RECORD_ADDRESS;
-
-       my_profile->urls = calloc(1, sizeof(ctsvc_list_s));
-       my_profile->urls->l_type = CTSVC_RECORD_URL;
-
-       my_profile->nicknames = calloc(1, sizeof(ctsvc_list_s));
-       my_profile->nicknames->l_type = CTSVC_RECORD_NICKNAME;
-
-       my_profile->profiles = calloc(1, sizeof(ctsvc_list_s));
-       my_profile->profiles->l_type = CTSVC_RECORD_PROFILE;
-
-       my_profile->relationships = calloc(1, sizeof(ctsvc_list_s));
-       my_profile->relationships->l_type = CTSVC_RECORD_RELATIONSHIP;
-
-       my_profile->images = calloc(1, sizeof(ctsvc_list_s));
-       my_profile->images->l_type = CTSVC_RECORD_IMAGE;
-
-       my_profile->extensions = calloc(1, sizeof(ctsvc_list_s));
-       my_profile->extensions->l_type = CTSVC_RECORD_EXTENSION;
-
-       *out_record = (contacts_record_h)my_profile;
-       return CONTACTS_ERROR_NONE;
+       do {
+               my_profile->name = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == my_profile->name)
+                       break;
+               my_profile->name->l_type = CTSVC_RECORD_NAME;
+
+               my_profile->company = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == my_profile->company)
+                       break;
+               my_profile->company->l_type = CTSVC_RECORD_COMPANY;
+
+               my_profile->note = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == my_profile->note)
+                       break;
+               my_profile->note->l_type = CTSVC_RECORD_NOTE;
+
+               my_profile->numbers = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == my_profile->numbers)
+                       break;
+               my_profile->numbers->l_type = CTSVC_RECORD_NUMBER;
+
+               my_profile->emails = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == my_profile->emails)
+                       break;
+               my_profile->emails->l_type = CTSVC_RECORD_EMAIL;
+
+               my_profile->events = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == my_profile->events)
+                       break;
+               my_profile->events->l_type = CTSVC_RECORD_EVENT;
+
+               my_profile->messengers = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == my_profile->messengers)
+                       break;
+               my_profile->messengers->l_type = CTSVC_RECORD_MESSENGER;
+
+               my_profile->postal_addrs = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == my_profile->postal_addrs)
+                       break;
+               my_profile->postal_addrs->l_type = CTSVC_RECORD_ADDRESS;
+
+               my_profile->urls = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == my_profile->urls)
+                       break;
+               my_profile->urls->l_type = CTSVC_RECORD_URL;
+
+               my_profile->nicknames = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == my_profile->nicknames)
+                       break;
+               my_profile->nicknames->l_type = CTSVC_RECORD_NICKNAME;
+
+               my_profile->profiles = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == my_profile->profiles)
+                       break;
+               my_profile->profiles->l_type = CTSVC_RECORD_PROFILE;
+
+               my_profile->relationships = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == my_profile->relationships)
+                       break;
+               my_profile->relationships->l_type = CTSVC_RECORD_RELATIONSHIP;
+
+               my_profile->images = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == my_profile->images)
+                       break;
+               my_profile->images->l_type = CTSVC_RECORD_IMAGE;
+
+               my_profile->extensions = calloc(1, sizeof(ctsvc_list_s));
+               if (NULL == my_profile->extensions)
+                       break;
+               my_profile->extensions->l_type = CTSVC_RECORD_EXTENSION;
+
+               *out_record = (contacts_record_h)my_profile;
+               return CONTACTS_ERROR_NONE;
+       } while (0);
+
+       CTS_ERR("calloc() Fail");
+       free(my_profile->extensions);
+       free(my_profile->images);
+       free(my_profile->relationships);
+       free(my_profile->profiles);
+       free(my_profile->nicknames);
+       free(my_profile->urls);
+       free(my_profile->postal_addrs);
+       free(my_profile->messengers);
+       free(my_profile->events);
+       free(my_profile->emails);
+       free(my_profile->numbers);
+       free(my_profile->note);
+       free(my_profile->company);
+       free(my_profile->name);
+       free(my_profile);
+       return CONTACTS_ERROR_OUT_OF_MEMORY;
 }
 
 static int __ctsvc_my_profile_destroy(contacts_record_h record, bool delete_child)
@@ -586,7 +634,12 @@ static int __ctsvc_my_profile_clone(contacts_record_h record, contacts_record_h
        ctsvc_list_clone((contacts_list_h)src_data->extensions, (contacts_list_h*)&out_data->extensions);
        out_data->extensions->l_type = CTSVC_RECORD_EXTENSION;
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_my_profile_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
 
index a872a5e..f56f368 100644 (file)
@@ -111,7 +111,12 @@ static int __ctsvc_person_clone(contacts_record_h record, contacts_record_h *out
        out_data->message_alert = SAFE_STRDUP(src_data->message_alert);
        out_data->status = SAFE_STRDUP(src_data->status);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_person_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
index a4b00e3..7a1362e 100644 (file)
@@ -103,7 +103,12 @@ static int __ctsvc_phonelog_clone(contacts_record_h record, contacts_record_h *o
        out_data->extra_data2 = SAFE_STRDUP(src_data->extra_data2);
        out_data->sim_slot_no = src_data->sim_slot_no;
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_phonelog_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
index ee2c1a2..76e7fcb 100644 (file)
@@ -111,6 +111,12 @@ static int __ctsvc_result_clone(contacts_record_h record, contacts_record_h *out
        for (cursor=src_data->values;cursor;cursor=cursor->next) {
                ctsvc_result_value_s *src = cursor->data;
                ctsvc_result_value_s *dest = calloc(1, sizeof(ctsvc_result_value_s));
+               if (NULL == dest) {
+                       CTS_ERR("calloc() Fail");
+                       __ctsvc_result_destroy((contacts_record_h)out_data, true);
+                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+               }
+
                dest->property_id = src->property_id;
                dest->type = src->type;
                switch(src->type) {
@@ -135,7 +141,12 @@ static int __ctsvc_result_clone(contacts_record_h record, contacts_record_h *out
                out_data->values = g_slist_append(out_data->values, (void*)dest);
        }
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_result_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
 
@@ -229,6 +240,10 @@ static int __ctsvc_result_set_int(contacts_record_h record, unsigned int propert
        }
 
        data = calloc(1, sizeof(ctsvc_result_value_s));
+       if (NULL == data) {
+               CTS_ERR("calloc() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
        data->property_id = property_id;
        data->type = CTSVC_VIEW_DATA_TYPE_INT;
 #ifdef _CONTACTS_IPC_SERVER
@@ -265,6 +280,10 @@ static int __ctsvc_result_set_lli(contacts_record_h record, unsigned int propert
        }
 
        data = calloc(1, sizeof(ctsvc_result_value_s));
+       if (NULL == data) {
+               CTS_ERR("calloc() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
        data->property_id = property_id;
        data->type = CTSVC_VIEW_DATA_TYPE_LLI;
        data->value.l = value;
@@ -293,6 +312,10 @@ static int __ctsvc_result_set_double(contacts_record_h record, unsigned int prop
        }
 
        data = calloc(1, sizeof(ctsvc_result_value_s));
+       if (NULL == data) {
+               CTS_ERR("calloc() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
        data->property_id = property_id;
        data->type = CTSVC_VIEW_DATA_TYPE_DOUBLE;
        data->value.d = value;
@@ -322,6 +345,10 @@ static int __ctsvc_result_set_bool(contacts_record_h record, unsigned int proper
        }
 
        data = calloc(1, sizeof(ctsvc_result_value_s));
+       if (NULL == data) {
+               CTS_ERR("calloc() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
        data->property_id = property_id;
        data->type = CTSVC_VIEW_DATA_TYPE_BOOL;
        data->value.i = value;
@@ -348,6 +375,10 @@ static int __ctsvc_result_set_str(contacts_record_h record, unsigned int propert
                                        if (str) {
                                                str_len = strlen(CTSVC_CONTACT_IMG_FULL_LOCATION) + strlen(str) + 2;
                                                full_path = calloc(1, str_len);
+                                               if (NULL == full_path) {
+                                                       CTS_ERR("calloc() Fail");
+                                                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+                                               }
                                                snprintf(full_path, str_len, "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, str);
                                        }
                                        free(data->value.s);
@@ -366,6 +397,10 @@ static int __ctsvc_result_set_str(contacts_record_h record, unsigned int propert
        }
 
        data = calloc(1, sizeof(ctsvc_result_value_s));
+       if (NULL == data) {
+               CTS_ERR("calloc() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
        data->property_id = property_id;
        data->type = CTSVC_VIEW_DATA_TYPE_STR;
        switch (property_id) {
@@ -374,6 +409,11 @@ static int __ctsvc_result_set_str(contacts_record_h record, unsigned int propert
                if (str) {
                        str_len = strlen(CTSVC_CONTACT_IMG_FULL_LOCATION) + strlen(str) + 2;
                        full_path = calloc(1, str_len);
+                       if (NULL == full_path) {
+                               CTS_ERR("calloc() Fail");
+                               free(data);
+                               return CONTACTS_ERROR_OUT_OF_MEMORY;
+                       }
                        snprintf(full_path, str_len, "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, str);
                }
                free(data->value.s);
index 636fee5..c679474 100644 (file)
@@ -96,7 +96,12 @@ static int __ctsvc_sdn_clone(contacts_record_h record, contacts_record_h *out_re
        out_data->number = SAFE_STRDUP(src_data->number);
        out_data->sim_slot_no = src_data->sim_slot_no;
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_sdn_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
index 978f897..b5b76be 100644 (file)
@@ -104,7 +104,12 @@ static int __ctsvc_speeddial_clone(contacts_record_h record, contacts_record_h *
        out_data->label = SAFE_STRDUP(src_data->label);
        out_data->number = SAFE_STRDUP(src_data->number);
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_speeddial_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
index ae84071..9aac7a1 100644 (file)
@@ -88,7 +88,12 @@ static int __ctsvc_updated_info_clone(contacts_record_h record, contacts_record_
        out_data->changed_ver = src_data->changed_ver;
        out_data->addressbook_id = src_data->addressbook_id;
 
-       CTSVC_RECORD_COPY_BASE(&(out_data->base), &(src_data->base));
+       int ret = ctsvc_record_copy_base(&(out_data->base), &(src_data->base));
+       if (CONTACTS_ERROR_NONE != ret) {
+               CTS_ERR("ctsvc_record_copy_base() Fail");
+               __ctsvc_updated_info_destroy((contacts_record_h)out_data, true);
+               return ret;
+       }
 
        *out_record = (contacts_record_h)out_data;
        return CONTACTS_ERROR_NONE;
index ce06b89..6994f45 100644 (file)
@@ -362,17 +362,21 @@ static inline int __ctsvc_vcard_add_folding(char **buf, int *buf_size, int buf_l
 {
        int char_len = 0;
        char *buf_copy = NULL;
-       int len, result_len;
+       int len, result_len = 0;
        char *r;
        const char *s;
        bool content_start = false;
        bool encode_64 = false;
 
        buf_copy = calloc(1, *buf_size);
+       if (NULL == buf_copy) {
+               CTS_ERR("calloc() Fail");
+               return 0;
+       }
 
        s = *buf;
        r = buf_copy;
-       len = result_len = 0;
+       len = result_len;
 
        while (*s) {
                if (*buf_size < result_len + 5) {
@@ -467,10 +471,12 @@ static inline int __ctsvc_vcard_append_name(ctsvc_list_s *names, char **buf, int
                if (CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST == order) {
                        snprintf(display, sizeof(display), "%s %s", name->first, name->last);
                }
+#ifdef _CONTACTS_IPC_CLIENT
                else {
                        /* CONTACTS_NAME_DISPLAY_ORDER_LASTFIRST */
                        snprintf(display, sizeof(display), "%s, %s", name->last, name->first);
                }
+#endif
        }
        else
                snprintf(display, sizeof(display), "%s%s", SAFE_STR(name->first), SAFE_STR(name->last));
@@ -1679,6 +1685,10 @@ static int __ctsvc_vcard_make(ctsvc_contact_s *contact, char **vcard_stream)
        __ctsvc_vcard_initial();
 
        buf = calloc(1, buf_size);
+       if (NULL == buf) {
+               CTS_ERR("calloc() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
 
        len = __ctsvc_vcard_append_start_vcard_3_0(&buf, &buf_size, len);
        if (len < 0) {
@@ -1717,6 +1727,11 @@ static int __ctsvc_vcard_make_from_my_profile(ctsvc_my_profile_s *my_profile, ch
        __ctsvc_vcard_initial();
 
        buf = calloc(1, buf_size);
+       if (NULL == buf) {
+               CTS_ERR("calloc() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
+
        len = __ctsvc_vcard_append_start_vcard_3_0(&buf, &buf_size, len);
        if (len < 0) {
                free(buf);
@@ -1921,6 +1936,11 @@ static int __ctsvc_vcard_make_from_person(ctsvc_person_s *person, ctsvc_list_s *
        __ctsvc_vcard_initial();
 
        buf = calloc(1, buf_size);
+       if (NULL == buf) {
+               CTS_ERR("calloc() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
+
        len = __ctsvc_vcard_append_start_vcard_3_0(&buf, &buf_size, len);
        if (len < 0) {
                free(buf);
@@ -2221,6 +2241,10 @@ static inline char* __ctsvc_vcard_translate_charset(char *src, int len)
 
                temp_size = (src_len+1) * sizeof(UChar);
                temp = malloc(temp_size);
+               if (NULL == temp) {
+                       CTS_ERR("malloc() Fail");
+                       return NULL;
+               }
                conv = ucnv_open(enc, &err);
                WARN_IF(U_FAILURE(err), "ucnv_open() Fail(%d), enc=%s", err, enc);
                ucnv_toUChars(conv, temp, temp_size, val, src_len, &err);
@@ -2229,6 +2253,11 @@ static inline char* __ctsvc_vcard_translate_charset(char *src, int len)
 
                dest_size = temp_size*2;
                dest = malloc(dest_size);
+               if (NULL == dest) {
+                       CTS_ERR("malloc() Fail");
+                       free(temp);
+                       return NULL;
+               }
                conv = ucnv_open("UTF-8", &err);
                WARN_IF(U_FAILURE(err), "ucnv_open() Fail(%d), enc=%s", err, enc);
                ucnv_fromUChars(conv, dest, dest_size, temp, u_strlen(temp), &err);
@@ -2247,7 +2276,8 @@ static void __ctsvc_vcard_get_prefix(char **prefix, char *src)
        if (temp) {
                int len = (int)temp - (int)src;
                *prefix = calloc(len+1, sizeof(char));
-               snprintf(*prefix, len+1, "%s", src);
+               if (*prefix)
+                       snprintf(*prefix, len+1, "%s", src);
        }
        else {
                *prefix = NULL;
@@ -2321,6 +2351,10 @@ static char* __ctsvc_vcard_get_val(int ver, char *src, char **prefix, char **des
 
                *cursor = '\0';
                *dest = strdup(src);
+               if (NULL == *dest) {
+                       CTS_ERR("strdup() Fail");
+                       return NULL;
+               }
                if (CTSVC_VCARD_VER_2_1 != ver)
                        __ctsvc_vcard_remove_folding(*dest);
 
@@ -2591,7 +2625,7 @@ static inline int __ctsvc_vcard_get_photo(contacts_record_h contact, ctsvc_list_
        type = __ctsvc_vcard_get_image_type(prefix);
 
        buf = g_base64_decode(temp+1, &size);
-       if (0 == size) {
+       if ((0 == size) || (NULL == buf)) {
                g_free(buf);
                return CONTACTS_ERROR_NONE;
        }
@@ -2647,6 +2681,10 @@ static inline void __ctsvc_vcard_get_event_type(contacts_record_h event, char *v
        temp = strtok_r(val, ";", &last);
        while (temp) {
                lower = strdup(temp);
+               if (NULL == lower) {
+                       CTS_ERR("strdup() Fail");
+                       break;
+               }
                lower_temp = lower;
                while (*lower_temp) {
                        *lower_temp = tolower(*lower_temp);
@@ -2723,6 +2761,10 @@ static inline void __ctsvc_vcard_get_company_type(contacts_record_h company, cha
        temp = strtok_r(val, ";", &last);
        while (temp) {
                lower = strdup(temp);
+               if (NULL == lower) {
+                       CTS_ERR("strdup() Fail");
+                       break;
+               }
                lower_temp = lower;
                while (*lower_temp) {
                        *lower_temp = tolower(*lower_temp);
@@ -2838,7 +2880,7 @@ static inline int __ctsvc_vcard_get_company_logo(ctsvc_list_s *company_list, cha
        type = __ctsvc_vcard_get_image_type(prefix);
 
        buf = g_base64_decode(temp+1, &size);
-       if (0 == size) {
+       if ((0 == size) || (NULL == buf)) {
                g_free(buf);
                return CONTACTS_ERROR_NONE;
        }
@@ -2972,6 +3014,10 @@ static inline void __ctsvc_vcard_get_url_type(contacts_record_h url, char *val)
        temp = strtok_r(val, ";", &last);
        while (temp) {
                lower = strdup(temp);
+               if (NULL == lower) {
+                       CTS_ERR("strdup() Fail");
+                       break;
+               }
                lower_temp = lower;
                while (*lower_temp) {
                        *lower_temp = tolower(*lower_temp);
@@ -3022,6 +3068,10 @@ static inline bool __ctsvc_vcard_get_number_type(contacts_record_h number, char
        temp = strtok_r(val, ";", &last);
        while (temp) {
                lower = strdup(temp);
+               if (NULL == lower) {
+                       CTS_ERR("strdup() Fail");
+                       break;
+               }
                lower_temp = lower;
                while (*lower_temp) {
                        *lower_temp = tolower(*lower_temp);
@@ -3218,6 +3268,10 @@ static inline bool __ctsvc_vcard_get_email_type(contacts_record_h email, char *v
        temp = strtok_r(val, ";", &last);
        while (temp) {
                lower = strdup(temp);
+               if (NULL == lower) {
+                       CTS_ERR("strdup() Fail");
+                       break;
+               }
                lower_temp = lower;
                while (*lower_temp) {
                        *lower_temp = tolower(*lower_temp);
@@ -3275,6 +3329,10 @@ static inline bool __ctsvc_vcard_get_postal_type(contacts_record_h address, char
        temp = strtok_r(val, ";", &last);
        while (temp) {
                lower = strdup(temp);
+               if (NULL == lower) {
+                       CTS_ERR("strdup() Fail");
+                       break;
+               }
                lower_temp = lower;
                while (*lower_temp) {
                        *lower_temp = tolower(*lower_temp);
@@ -3366,6 +3424,10 @@ static inline void __ctsvc_vcard_get_messenger_type(contacts_record_h messenger,
        temp = strtok_r(val, ";", &last);
        while (temp) {
                lower = strdup(temp);
+               if (NULL == lower) {
+                       CTS_ERR("strdup() Fail");
+                       break;
+               }
                lower_temp = lower;
                while (*lower_temp) {
                        *lower_temp = tolower(*lower_temp);
@@ -3444,6 +3506,10 @@ static inline void __ctsvc_vcard_get_relationship_type(contacts_record_h relatio
        temp = strtok_r(val, ";", &last);
        while (temp) {
                lower = strdup(temp);
+               if (NULL == lower) {
+                       CTS_ERR("strdup() Fail");
+                       break;
+               }
                lower_temp = lower;
                while (*lower_temp) {
                        *lower_temp = tolower(*lower_temp);
@@ -3524,6 +3590,11 @@ static char* __ctsvc_vcard_decode_base64_val(char *val)
        decoded_str = g_base64_decode(src, &size);
 
        dest = calloc((src-val)+size+1, sizeof(char));
+       if (NULL == dest) {
+               CTS_ERR("calloc() Fail");
+               return NULL;
+       }
+
        snprintf(dest, (src-val)+1, "%s", val);
        snprintf(dest+(src-val), size+1, "%s", decoded_str);
        g_free(decoded_str);
@@ -3573,6 +3644,12 @@ static inline int __ctsvc_vcard_get_contact(int ver, char *vcard, contacts_recor
 
                if (base64_encoded) {
                        char *temp = __ctsvc_vcard_decode_base64_val(val);
+                       if (NULL == temp) {
+                               CTS_ERR("__ctsvc_vcard_decode_base64_val() Fail");
+                               free(prefix);
+                               free(val);
+                               return CONTACTS_ERROR_OUT_OF_MEMORY;
+                       }
                        free(val);
                        val = temp;
                }
@@ -3745,6 +3822,11 @@ static inline void __ctsvc_vcard_make_contact_display_name(ctsvc_contact_s *cont
                if (0 < temp_display_len) {
                        temp_display_len += 7;
                        temp_display = calloc(1, temp_display_len);
+                       if (NULL == temp_display) {
+                               CTS_ERR("calloc() Fail");
+                               return;
+                       }
+
                        len=0;
 
                        if (name->last) {
@@ -3836,6 +3918,11 @@ static inline void __ctsvc_vcard_make_contact_display_name(ctsvc_contact_s *cont
                if (name->prefix && temp_display) {
                        display_len = SAFE_STRLEN(name->prefix) + temp_display_len + 2;
                        reverse_display = calloc(1, display_len);
+                       if (NULL == reverse_display) {
+                               CTS_ERR("calloc() Fail");
+                               free(temp_display);
+                               return;
+                       }
                        snprintf(reverse_display, display_len, "%s %s", name->prefix, temp_display);
                        free(temp_display);
                }
@@ -3869,6 +3956,12 @@ static inline void __ctsvc_vcard_make_contact_display_name(ctsvc_contact_s *cont
                                temp_display_len += 6;
                                /* make reverse_temp_display_name */
                                temp_display = calloc(1, temp_display_len);
+                               if (NULL == temp_display) {
+                                       CTS_ERR("calloc() Fail");
+                                       free(reverse_display);
+                                       return;
+                               }
+
                                len = 0;
 
                                if (name->first) {
@@ -3904,6 +3997,12 @@ static inline void __ctsvc_vcard_make_contact_display_name(ctsvc_contact_s *cont
                        if (name->prefix && temp_display) {
                                display_len = SAFE_STRLEN(name->prefix) + temp_display_len + 2;
                                display = calloc(1, display_len);
+                               if (NULL == display) {
+                                       CTS_ERR("calloc() Fail");
+                                       free(temp_display);
+                                       free(reverse_display);
+                                       return;
+                               }
                                snprintf(display, display_len, "%s %s", name->prefix, temp_display);
                                free(temp_display);
                        }
@@ -3920,10 +4019,12 @@ static inline void __ctsvc_vcard_make_contact_display_name(ctsvc_contact_s *cont
                        contact->display_name = display;
                        free(reverse_display);
                }
+#ifdef _CONTACTS_IPC_CLIENT
                else {
                        contact->display_name = reverse_display;
                        free(display);
                }
+#endif
 
                contact->display_source_type = CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NAME;
        }
@@ -4126,6 +4227,11 @@ static const char* __contacts_vcard_parse_get_vcard_object(const char *cursor, G
                                }
                                vcard_len += (vcard_cursor - pos_start);
                                vcard_object = calloc(vcard_len + 1, sizeof(char));
+                               if (NULL == vcard_object) {
+                                       CTS_ERR("calloc() Fail");
+                                       __contacts_vcard_free_sub_vcard_info_list(sub_vcard_list);
+                                       return NULL;
+                               }
 
                                vcard_len = 0;
                                pos_start = vcard_start_cursor;
@@ -4144,6 +4250,11 @@ static const char* __contacts_vcard_parse_get_vcard_object(const char *cursor, G
                        }
                        else if (STRING_EQUAL == strncmp(vcard_cursor, begin, strlen(begin))) { /* sub vcard */
                                sub_vcard_info_s *sub_vcard_info = calloc(1, sizeof(sub_vcard_info_s));
+                               if (NULL == sub_vcard_info) {
+                                       CTS_ERR("calloc() Fail");
+                                       __contacts_vcard_free_sub_vcard_info_list(sub_vcard_list);
+                                       return NULL;
+                               }
                                sub_vcard_info->pos_start = vcard_cursor;
 
                                vcard_cursor = __contacts_vcard_parse_get_vcard_object(vcard_cursor, plist_vcard_object);
index dc92649..17331d8 100644 (file)
@@ -657,12 +657,27 @@ int ctsvc_ipc_unmarshal_record_common(const pims_ipc_data_h ipc_data, ctsvc_reco
        }
 
        str = (char*)pims_ipc_data_get(ipc_data,&size);
+       if (NULL == str) {
+               CTS_ERR("pims_ipc_data_get() Fail");
+               return CONTACTS_ERROR_NO_DATA;
+       }
        common->view_uri = ctsvc_view_get_uri(str);
-       common->property_max_count = *(unsigned int*)pims_ipc_data_get(ipc_data,&size);
+
+       tmp = pims_ipc_data_get(ipc_data,&size);
+       if (NULL == tmp) {
+               CTS_ERR("pims_ipc_data_get() Fail");
+               return CONTACTS_ERROR_NO_DATA;
+       }
+       common->property_max_count = *(unsigned int*)tmp;
 
        if (0 < common->property_max_count) {
                unsigned char *tmp_properties_flags;
                tmp_properties_flags = (unsigned char*)pims_ipc_data_get(ipc_data, &size);
+               if (NULL == tmp_properties_flags) {
+                       CTS_ERR("pims_ipc_data_get() Fail");
+                       return CONTACTS_ERROR_NO_DATA;
+               }
+
                common->properties_flags  = calloc(common->property_max_count, sizeof(char));
                if (common->properties_flags == NULL) {
                        CTS_ERR("calloc() Fail");
@@ -671,6 +686,10 @@ int ctsvc_ipc_unmarshal_record_common(const pims_ipc_data_h ipc_data, ctsvc_reco
                memcpy(common->properties_flags, tmp_properties_flags, sizeof(char)*common->property_max_count);
        }
        tmp = pims_ipc_data_get(ipc_data,&size);
+       if (NULL == tmp) {
+               CTS_ERR("pims_ipc_data_get() Fail");
+               return CONTACTS_ERROR_NO_DATA;
+       }
        common->property_flag = *(unsigned char*)tmp;
 
        return CONTACTS_ERROR_NONE;
index 000c2c7..b12477a 100644 (file)
@@ -246,6 +246,11 @@ void ctsvc_set_client_access_info(pims_ipc_h ipc, const char *smack)
        info = __ctsvc_find_access_info(thread_id);
        if (NULL == info) {
                info = calloc(1, sizeof(ctsvc_permission_info_s));
+               if (NULL == info) {
+                       CTS_ERR("Thread(0x%x), calloc() Fail", thread_id);
+                       ctsvc_mutex_unlock(CTS_MUTEX_ACCESS_CONTROL);
+                       return;
+               }
                __thread_list  = g_list_append(__thread_list, info);
        }
        info->thread_id = thread_id;
@@ -344,16 +349,24 @@ bool ctsvc_have_ab_write_permission(int addressbook_id)
 
 int ctsvc_get_write_permitted_addressbook_ids(int **addressbook_ids, int *count)
 {
+       unsigned int thread_id;
        ctsvc_permission_info_s *find = NULL;
        *count = 0;
        *addressbook_ids = NULL;
 
        ctsvc_mutex_lock(CTS_MUTEX_ACCESS_CONTROL);
-       find = __ctsvc_find_access_info(pthread_self());
+       thread_id = (unsigned int)pthread_self();
+       find = __ctsvc_find_access_info(thread_id);
        if (find) {
                if (find->write_list && 0 < find->write_list_count) {
                        int size = find->write_list_count * sizeof(int);
                        int *list = calloc(1, size);
+                       if (NULL == list) {
+                               CTS_ERR("Thread(0x%x), calloc() Fail", thread_id);
+                               ctsvc_mutex_unlock(CTS_MUTEX_ACCESS_CONTROL);
+                               return CONTACTS_ERROR_OUT_OF_MEMORY;
+                       }
+
                        memcpy(list, find->write_list, size);
                        *count = find->write_list_count;
                        *addressbook_ids = list;
index 293accb..a72c675 100644 (file)
@@ -360,6 +360,10 @@ static int __ctsvc_db_activity_get_records_with_query(contacts_query_h query, in
 
        if (false == had_activity_id) {
                s_query->projection = realloc(s_query->projection, s_query->projection_count+1);
+               if (NULL == s_query->projection) {
+                       CTS_ERR("realloc() Fail");
+                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+               }
                s_query->projection[s_query->projection_count] = CTSVC_PROPERTY_ACTIVITY_ID;
                s_query->projection_count++;
        }
@@ -410,10 +414,12 @@ static int __ctsvc_db_activity_get_records_with_query(contacts_query_h query, in
                                break;
                        case CTSVC_PROPERTY_ACTIVITY_SOURCE_NAME:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(activity->source_name);
                                activity->source_name = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_ACTIVITY_STATUS:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(activity->status);
                                activity->status = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_ACTIVITY_TIMESTAMP:
@@ -421,10 +427,12 @@ static int __ctsvc_db_activity_get_records_with_query(contacts_query_h query, in
                                break;
                        case CTSVC_PROPERTY_ACTIVITY_SERVICE_OPERATION:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(activity->service_operation);
                                activity->service_operation = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_ACTIVITY_URI:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(activity->uri);
                                activity->uri = SAFE_STRDUP(temp);
                                break;
                        default:
index 4fafb11..eb7a671 100644 (file)
@@ -326,6 +326,7 @@ static int __ctsvc_db_activity_photo_get_records_with_query(contacts_query_h que
                                break;
                        case CTSVC_PROPERTY_ACTIVITY_PHOTO_URL:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(activity_photo->photo_url);
                                activity_photo->photo_url = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_ACTIVITY_PHOTO_SORT_INDEX:
index ed3c1d4..d0f58a2 100644 (file)
@@ -379,34 +379,42 @@ static int __ctsvc_db_address_get_records_with_query(contacts_query_h query, int
                                break;
                        case CTSVC_PROPERTY_ADDRESS_LABEL:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(address->label);
                                address->label = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_ADDRESS_POSTBOX:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(address->pobox);
                                address->pobox = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_ADDRESS_POSTAL_CODE:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(address->postalcode);
                                address->postalcode = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_ADDRESS_REGION:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(address->region);
                                address->region = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_ADDRESS_LOCALITY:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(address->locality);
                                address->locality = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_ADDRESS_STREET:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(address->street);
                                address->street = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_ADDRESS_COUNTRY:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(address->country);
                                address->country = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_ADDRESS_EXTENDED:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(address->extended);
                                address->extended = SAFE_STRDUP(temp);
                                break;
                        default:
index cf4aaa6..241ef0a 100644 (file)
@@ -471,6 +471,7 @@ static int __ctsvc_db_addressbook_get_records_with_query(contacts_query_h query,
                                break;
                        case CTSVC_PROPERTY_ADDRESSBOOK_NAME:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(addressbook->name);
                                addressbook->name = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_ADDRESSBOOK_MODE:
index aeb3332..b2ec0b8 100644 (file)
@@ -395,42 +395,52 @@ static int __ctsvc_db_company_get_records_with_query(contacts_query_h query, int
                                break;
                        case CTSVC_PROPERTY_COMPANY_LABEL:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(company->label);
                                company->label = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_COMPANY_NAME:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(company->name);
                                company->name = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_COMPANY_DEPARTMENT:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(company->department);
                                company->department = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_COMPANY_JOB_TITLE:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(company->job_title);
                                company->job_title = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_COMPANY_ASSISTANT_NAME:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(company->assistant_name);
                                company->assistant_name = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_COMPANY_ROLE:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(company->role);
                                company->role = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_COMPANY_LOGO:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(company->logo);
                                company->logo = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_COMPANY_LOCATION:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(company->location);
                                company->location = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_COMPANY_DESCRIPTION:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(company->description);
                                company->description = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_COMPANY_PHONETIC_NAME:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(company->phonetic_name);
                                company->phonetic_name = SAFE_STRDUP(temp);
                                break;
                        default:
index ac0935f..2156629 100644 (file)
@@ -529,6 +529,12 @@ static inline int __ctsvc_contact_make_search_data(int contact_id, ctsvc_contact
                        if (number_record && number_record->cleaned) {
                                buf_size = SAFE_STRLEN(number) + SAFE_STRLEN(number_record->cleaned) + SAFE_STRLEN(number_record->normalized) + 3;
                                temp_number = calloc(1, buf_size);
+                               if (NULL == temp_number) {
+                                       CTS_ERR("calloc() Fail");
+                                       free(number);
+                                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+                               }
+
                                if (number)
                                        snprintf(temp_number, buf_size, "%s %s %s", SAFE_STR(number), number_record->cleaned, number_record->normalized);
                                else
@@ -552,6 +558,13 @@ static inline int __ctsvc_contact_make_search_data(int contact_id, ctsvc_contact
 
                                buf_size = SAFE_STRLEN(data) + SAFE_STRLEN(email->email_addr) * (had?2:1) + 4;
                                temp_data = calloc(1, buf_size);
+                               if (NULL == temp_data) {
+                                       CTS_ERR("calloc() Fail");
+                                       free(data);
+                                       free(number);
+                                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+                               }
+
                                if (data)
                                        snprintf(temp_data, buf_size, "%s %s %s",data, email->email_addr, (had?temp:""));
                                else
@@ -575,6 +588,13 @@ static inline int __ctsvc_contact_make_search_data(int contact_id, ctsvc_contact
 
                                buf_size = SAFE_STRLEN(data) + SAFE_STRLEN(nickname->nickname) * (had?2:1) + 4;
                                temp_data = calloc(1, buf_size);
+                               if (NULL == temp_data) {
+                                       CTS_ERR("calloc() Fail");
+                                       free(data);
+                                       free(number);
+                                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+                               }
+
                                if (data)
                                        snprintf(temp_data, buf_size, "%s %s %s", data, nickname->nickname, (had?temp:""));
                                else
@@ -604,6 +624,12 @@ static inline int __ctsvc_contact_make_search_data(int contact_id, ctsvc_contact
                                buf_size = SAFE_STRLEN(data)
                                                        + str_len * 2 + 16;
                                temp_data = calloc(1, buf_size);
+                               if (NULL == temp_data) {
+                                       CTS_ERR("calloc() Fail");
+                                       free(data);
+                                       free(number);
+                                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+                               }
 
                                char temp[str_len+1];
 
@@ -657,6 +683,13 @@ static inline int __ctsvc_contact_make_search_data(int contact_id, ctsvc_contact
 
                                buf_size = SAFE_STRLEN(data) + SAFE_STRLEN(note->note) * (had?2:1) + 4;
                                temp_data = calloc(1, buf_size);
+                               if (NULL == temp_data) {
+                                       CTS_ERR("calloc() Fail");
+                                       free(data);
+                                       free(number);
+                                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+                               }
+
                                if (data)
                                        snprintf(temp_data, buf_size, "%s %s %s",data, note->note, (had?temp:""));
                                else
@@ -680,6 +713,13 @@ static inline int __ctsvc_contact_make_search_data(int contact_id, ctsvc_contact
 
                                buf_size = SAFE_STRLEN(data) + SAFE_STRLEN(messenger->im_id) * (had?2:1) + 4;
                                temp_data = calloc(1, buf_size);
+                               if (NULL == temp_data) {
+                                       CTS_ERR("calloc() Fail");
+                                       free(data);
+                                       free(number);
+                                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+                               }
+
                                if (data)
                                        snprintf(temp_data, buf_size, "%s %s %s",data, messenger->im_id, (had?temp:""));
                                else
@@ -703,6 +743,13 @@ static inline int __ctsvc_contact_make_search_data(int contact_id, ctsvc_contact
 
                                buf_size = SAFE_STRLEN(data) + SAFE_STRLEN(relationship->name) * (had?2:1) + 4;
                                temp_data = calloc(1, buf_size);
+                               if (NULL == temp_data) {
+                                       CTS_ERR("calloc() Fail");
+                                       free(data);
+                                       free(number);
+                                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+                               }
+
                                if (data)
                                        snprintf(temp_data, buf_size, "%s %s %s",data, relationship->name, (had?temp:""));
                                else
@@ -732,6 +779,12 @@ static inline int __ctsvc_contact_make_search_data(int contact_id, ctsvc_contact
                                len = 0;
                                buf_size = SAFE_STRLEN(data) + str_len * 2 + 18;
                                temp_data = calloc(1, buf_size);
+                               if (NULL == temp_data) {
+                                       CTS_ERR("calloc() Fail");
+                                       free(data);
+                                       free(number);
+                                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+                               }
 
                                char temp[str_len+1];
 
@@ -834,6 +887,11 @@ static inline int __ctsvc_contact_refresh_lookup_data(int contact_id, ctsvc_cont
                                                                        + SAFE_STRLEN(name_record->last)+ SAFE_STRLEN(name_record->suffix) + 1;
                                int reverse_lang_type = ctsvc_contact_get_name_language(name_record);
                                temp_name = calloc(1, temp_len);
+                               if (NULL == temp_name) {
+                                       CTS_ERR("calloc() Fail");
+                                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+                               }
+
                                if (reverse_lang_type == CTSVC_LANG_KOREAN ||
                                        reverse_lang_type == CTSVC_LANG_CHINESE ||
                                        reverse_lang_type == CTSVC_LANG_JAPANESE) {
@@ -1376,6 +1434,11 @@ static int __ctsvc_db_contact_get_records_with_query(contacts_query_h query, int
 
        if (0 == had_contact_id) {
                s_query->projection = realloc(s_query->projection, s_query->projection_count+1);
+               if (NULL == s_query->projection) {
+                       CTS_ERR("realloc() Fail");
+                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+               }
+
                s_query->projection[s_query->projection_count] = CTSVC_PROPERTY_CONTACT_ID;
                s_query->projection_count++;
        }
@@ -1422,6 +1485,7 @@ static int __ctsvc_db_contact_get_records_with_query(contacts_query_h query, int
                                break;
                        case CTSVC_PROPERTY_CONTACT_DISPLAY_NAME:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(contact->display_name);
                                contact->display_name = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID:
@@ -1432,12 +1496,14 @@ static int __ctsvc_db_contact_get_records_with_query(contacts_query_h query, int
                                break;
                        case CTSVC_PROPERTY_CONTACT_RINGTONE:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(contact->ringtone_path);
                                contact->ringtone_path = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL:
                                temp = ctsvc_stmt_get_text(stmt, i);
                                if (temp && *temp) {
                                        snprintf(full_path, sizeof(full_path), "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, temp);
+                                       free(contact->image_thumbnail_path);
                                        contact->image_thumbnail_path = strdup(full_path);
                                }
                                break;
@@ -1455,14 +1521,17 @@ static int __ctsvc_db_contact_get_records_with_query(contacts_query_h query, int
                                break;
                        case CTSVC_PROPERTY_CONTACT_UID:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(contact->uid);
                                contact->uid = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_CONTACT_VIBRATION:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(contact->vibration);
                                contact->vibration = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_CONTACT_MESSAGE_ALERT:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(contact->message_alert);
                                contact->message_alert = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_CONTACT_CHANGED_TIME:
index cc7f51b..a8932e8 100644 (file)
@@ -80,6 +80,10 @@ int ctsvc_contact_add_image_file(int parent_id, int img_id,
 
        lower_ext = strdup(ext);
        temp = lower_ext;
+       if (NULL == temp) {
+               CTS_ERR("strdup() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
        while (*temp) {
                *temp = tolower(*temp);
                temp++;
@@ -380,6 +384,11 @@ int ctsvc_contact_make_search_name(ctsvc_contact_s *contact, char **search_name)
                                if (normalized_display_name) {
                                        buf_size = SAFE_STRLEN(normalized_display_name) + strlen(contact->sort_name) + 2;
                                        name = calloc(1, buf_size);
+                                       if (NULL == name) {
+                                               CTS_ERR("calloc() Fail");
+                                               free(normalized_display_name);
+                                               return CONTACTS_ERROR_OUT_OF_MEMORY;
+                                       }
                                        snprintf(name, buf_size, "%s %s", normalized_display_name, contact->sort_name);
                                        free(normalized_display_name);
                                }
@@ -394,6 +403,11 @@ int ctsvc_contact_make_search_name(ctsvc_contact_s *contact, char **search_name)
                                        if (CONTACTS_ERROR_NONE == ret) {
                                                int name_len = (CHINESE_PINYIN_SPELL_MAX_LEN*strlen(contact->display_name)+1) * sizeof(char);
                                                char *name_nospace = calloc(1, name_len);
+                                               if (NULL == name_nospace) {
+                                                       CTS_ERR("calloc() Fail");
+                                                       ctsvc_pinyin_free(pinyinname, size);
+                                                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+                                               }
                                                char *temp_name = NULL;
 
                                                ctsvc_normalize_str(contact->display_name, &name);
@@ -407,6 +421,13 @@ int ctsvc_contact_make_search_name(ctsvc_contact_s *contact, char **search_name)
                                                                                                        + SAFE_STRLEN(pinyinname[i].pinyin_initial)
                                                                                                        + 4;
                                                                temp_name = calloc(1, buf_size);
+                                                               if (NULL == temp_name) {
+                                                                       CTS_ERR("calloc() Fail");
+                                                                       free(name_nospace);
+                                                                       ctsvc_pinyin_free(pinyinname, size);
+                                                                       free(name);
+                                                                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+                                                               }
                                                                snprintf(temp_name, buf_size, "%s %s %s %s",
                                                                                name, pinyinname[i].pinyin_name, name_nospace, pinyinname[i].pinyin_initial);
                                                                free(name);
@@ -420,7 +441,13 @@ int ctsvc_contact_make_search_name(ctsvc_contact_s *contact, char **search_name)
 
                                                        buf_size = SAFE_STRLEN(name) + SAFE_STRLEN(&contact->display_name[i]) + 2;
                                                        temp_name = calloc(1, buf_size);
-
+                                                       if (NULL == temp_name) {
+                                                               CTS_ERR("calloc() Fail");
+                                                               free(name_nospace);
+                                                               ctsvc_pinyin_free(pinyinname, size);
+                                                               free(name);
+                                                               return CONTACTS_ERROR_OUT_OF_MEMORY;
+                                                       }
                                                        snprintf(temp_name, buf_size, "%s %s", name, &contact->display_name[i]);
 
                                                        free(name);
@@ -439,6 +466,11 @@ int ctsvc_contact_make_search_name(ctsvc_contact_s *contact, char **search_name)
                                                        __ctsvc_contact_get_initial(contact->display_name, initial, sizeof(initial), false);
                                                        buf_size = SAFE_STRLEN(normalized_display_name) + strlen(initial) + 2;
                                                        name = calloc(1, buf_size);
+                                                       if (NULL == name) {
+                                                               CTS_ERR("calloc() Fail");
+                                                               free(normalized_display_name);
+                                                               return CONTACTS_ERROR_OUT_OF_MEMORY;
+                                                       }
                                                        snprintf(name, buf_size, "%s %s", normalized_display_name, initial);
 
                                                        free(normalized_display_name);
@@ -454,6 +486,11 @@ int ctsvc_contact_make_search_name(ctsvc_contact_s *contact, char **search_name)
                                                __ctsvc_contact_get_initial(contact->display_name, initial, sizeof(initial), false);
                                                buf_size = SAFE_STRLEN(normalized_display_name) + strlen(initial) + 2;
                                                name = calloc(1, buf_size);
+                                               if (NULL == name) {
+                                                       CTS_ERR("calloc() Fail");
+                                                       free(normalized_display_name);
+                                                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+                                               }
                                                snprintf(name, buf_size, "%s %s", normalized_display_name, initial);
 
                                                free(normalized_display_name);
@@ -466,6 +503,10 @@ int ctsvc_contact_make_search_name(ctsvc_contact_s *contact, char **search_name)
                        int count, i, j;
                        int full_len, chosung_len;
                        char *chosung = calloc(1, strlen(contact->display_name) * 5);
+                       if (NULL == chosung) {
+                               CTS_ERR("calloc() Fail");
+                               return CONTACTS_ERROR_OUT_OF_MEMORY;
+                       }
                        int total_len = strlen(contact->display_name);
 
                        count = ctsvc_get_chosung(contact->display_name, chosung, strlen(contact->display_name) * 5);
@@ -479,6 +520,12 @@ int ctsvc_contact_make_search_name(ctsvc_contact_s *contact, char **search_name)
 
                                        buf_size = SAFE_STRLEN(name) + SAFE_STRLEN(&contact->display_name[i]) + SAFE_STRLEN(&chosung[j]) + 3;
                                        temp_name = calloc(1, buf_size);
+                                       if (NULL == temp_name) {
+                                               CTS_ERR("calloc() Fail");
+                                               free(chosung);
+                                               free(name);
+                                               return CONTACTS_ERROR_OUT_OF_MEMORY;
+                                       }
 
                                        snprintf(temp_name, buf_size, "%s %s %s", name, &contact->display_name[i], &chosung[j]);
 
@@ -501,6 +548,11 @@ int ctsvc_contact_make_search_name(ctsvc_contact_s *contact, char **search_name)
                                __ctsvc_contact_get_initial(contact->display_name, initial, sizeof(initial), false);
                                buf_size = SAFE_STRLEN(normalized_display_name) + strlen(initial) + 2;
                                name = calloc(1, buf_size);
+                               if (NULL == name) {
+                                       CTS_ERR("calloc() Fail");
+                                       free(normalized_display_name);
+                                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+                               }
                                snprintf(name, buf_size, "%s %s", normalized_display_name, initial);
 
                                free(normalized_display_name);
@@ -522,6 +574,12 @@ int ctsvc_contact_make_search_name(ctsvc_contact_s *contact, char **search_name)
                        if (0 < buf_size) {
                                buf_size += 3; /* for space and null string */
                                phonetic = calloc(1, buf_size);
+                               if (NULL == phonetic) {
+                                       CTS_ERR("calloc() Fail");
+                                       free(name);
+                                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+                               }
+
                                if (name_record->phonetic_first)
                                        temp_len += snprintf(phonetic, buf_size, "%s", name_record->phonetic_first);
                                if (name_record->phonetic_middle) {
@@ -538,6 +596,12 @@ int ctsvc_contact_make_search_name(ctsvc_contact_s *contact, char **search_name)
                                if (name) {
                                        buf_size = SAFE_STRLEN(name) + SAFE_STRLEN(phonetic) + 2;
                                        temp_name = calloc(1, buf_size);
+                                       if (NULL == temp_name) {
+                                               CTS_ERR("calloc() Fail");
+                                               free(phonetic);
+                                               free(name);
+                                               return CONTACTS_ERROR_OUT_OF_MEMORY;
+                                       }
                                        snprintf(temp_name, buf_size, "%s %s", name, phonetic);
                                        free(name);
                                        name = temp_name;
@@ -559,6 +623,10 @@ static int __ctsvc_make_phonetic_name(ctsvc_name_s* name, char** phonetic, conta
        if (0 < len) {
                len += 3; /* for space and null string */
                *phonetic = calloc(1, len);
+               if (NULL == *phonetic) {
+                       CTS_ERR("calloc() Fail");
+                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+               }
 
                int temp_len = 0;
                if (order == CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST) {
@@ -591,7 +659,7 @@ static int __ctsvc_make_phonetic_name(ctsvc_name_s* name, char** phonetic, conta
                }
        }
 
-       return len;
+       return CONTACTS_ERROR_NONE;
 }
 
 static inline int __ctsvc_get_sort_name_to_pinyin(const char *display_name, char **sort_name) {
@@ -898,6 +966,10 @@ char * __ctsvc_remove_first_space(char *src)
        int name_len = (SAFE_STRLEN(src)+1)*sizeof(char);
        char *name_nospace = NULL;
        name_nospace = calloc(1, name_len);
+       if (NULL == name_nospace) {
+               CTS_ERR("calloc() Fail");
+               return NULL;
+       }
 
        int len = strlen(src);
        int i =0;
@@ -969,6 +1041,10 @@ void ctsvc_contact_make_display_name(ctsvc_contact_s *contact)
                if (0 < temp_display_len) {
                        temp_display_len += 7;
                        temp_display = calloc(1, temp_display_len);
+                       if (NULL == temp_display) {
+                               CTS_ERR("calloc() Fail");
+                               return;
+                       }
                        len=0;
 
                        /* get language type */
@@ -1070,6 +1146,11 @@ void ctsvc_contact_make_display_name(ctsvc_contact_s *contact)
                if (name->prefix && temp_display) {
                        display_len = SAFE_STRLEN(name->prefix) + temp_display_len + 2;
                        display = calloc(1, display_len);
+                       if (NULL == display) {
+                               CTS_ERR("calloc() Fail");
+                               free(temp_display);
+                               return;
+                       }
                        char * temp = __ctsvc_remove_first_space(name->prefix);
                        snprintf(display, display_len, "%s %s", temp, temp_display);
                        free(temp);
@@ -1110,6 +1191,10 @@ void ctsvc_contact_make_display_name(ctsvc_contact_s *contact)
                                temp_display_len += 6;
                                /* make reverse_temp_display_name */
                                temp_display = calloc(1, temp_display_len);
+                               if (NULL == temp_display) {
+                                       CTS_ERR("calloc() Fail");
+                                       return;
+                               }
                                len = 0;
 
                                if (name->first) {
@@ -1151,6 +1236,11 @@ void ctsvc_contact_make_display_name(ctsvc_contact_s *contact)
                        if (name->prefix && temp_display) {
                                display_len = SAFE_STRLEN(name->prefix) + temp_display_len + 2;
                                display = calloc(1, display_len);
+                               if (NULL == display) {
+                                       CTS_ERR("calloc() Fail");
+                                       free(temp_display);
+                                       return;
+                               }
                                snprintf(display, display_len, "%s %s", name->prefix, temp_display);
                                contact->display_name = display;
                                contact->sort_name = temp_display;
@@ -1188,6 +1278,7 @@ void ctsvc_contact_make_display_name(ctsvc_contact_s *contact)
                                ctsvc_nickname_s *nickname = (ctsvc_nickname_s *)cur->data;
                                if (nickname && nickname->nickname) {
                                        ctsvc_record_set_property_flag((ctsvc_record_s *)contact, _contacts_contact.display_name, CTSVC_PROPERTY_FLAG_DIRTY);
+                                       free(contact->display_name);
                                        contact->display_name = SAFE_STRDUP(nickname->nickname);
                                        contact->display_source_type = CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NICKNAME;
                                        break;
@@ -1201,6 +1292,7 @@ void ctsvc_contact_make_display_name(ctsvc_contact_s *contact)
                                ctsvc_number_s *number = (ctsvc_number_s *)cur->data;
                                if (number && number->number) {
                                        ctsvc_record_set_property_flag((ctsvc_record_s *)contact, _contacts_contact.display_name, CTSVC_PROPERTY_FLAG_DIRTY);
+                                       free(contact->display_name);
                                        contact->display_name = SAFE_STRDUP(number->number);
                                        contact->display_source_type = CONTACTS_DISPLAY_NAME_SOURCE_TYPE_NUMBER;
                                        break;
@@ -1214,6 +1306,7 @@ void ctsvc_contact_make_display_name(ctsvc_contact_s *contact)
                                ctsvc_email_s *email = (ctsvc_email_s *)cur->data;
                                if (email && email->email_addr) {
                                        ctsvc_record_set_property_flag((ctsvc_record_s *)contact, _contacts_contact.display_name, CTSVC_PROPERTY_FLAG_DIRTY);
+                                       free(contact->display_name);
                                        contact->display_name = SAFE_STRDUP(email->email_addr);
                                        contact->display_source_type = CONTACTS_DISPLAY_NAME_SOURCE_TYPE_EMAIL;
                                        break;
index bbf8d3c..52c5ab9 100644 (file)
@@ -575,10 +575,12 @@ static int __ctsvc_db_email_get_records_with_query(contacts_query_h query, int o
                                break;
                        case CTSVC_PROPERTY_EMAIL_LABEL:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(email->label);
                                email->label = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_EMAIL_EMAIL:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(email->email_addr);
                                email->email_addr = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_EMAIL_IS_DEFAULT:
index 343b0be..2d7dcbb 100644 (file)
@@ -379,6 +379,7 @@ static int __ctsvc_db_event_get_records_with_query(contacts_query_h query, int o
                                break;
                        case CTSVC_PROPERTY_EVENT_LABEL:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(event->label);
                                event->label = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_EVENT_DATE:
index 3d7fa1b..9c4f5c9 100644 (file)
@@ -388,46 +388,57 @@ static int __ctsvc_db_extension_get_records_with_query(contacts_query_h query, i
                                break;
                        case CTSVC_PROPERTY_EXTENSION_DATA2:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(extension->data2);
                                extension->data2 = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_EXTENSION_DATA3:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(extension->data3);
                                extension->data3 = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_EXTENSION_DATA4:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(extension->data4);
                                extension->data4 = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_EXTENSION_DATA5:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(extension->data5);
                                extension->data5 = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_EXTENSION_DATA6:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(extension->data6);
                                extension->data6 = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_EXTENSION_DATA7:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(extension->data7);
                                extension->data7 = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_EXTENSION_DATA8:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(extension->data8);
                                extension->data8 = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_EXTENSION_DATA9:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(extension->data9);
                                extension->data9 = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_EXTENSION_DATA10:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(extension->data10);
                                extension->data10 = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_EXTENSION_DATA11:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(extension->data11);
                                extension->data11 = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_EXTENSION_DATA12:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(extension->data12);
                                extension->data12 = SAFE_STRDUP(temp);
                                break;
                        default:
index 827014f..2df2119 100644 (file)
@@ -614,29 +614,35 @@ static int __ctsvc_db_group_get_records_with_query(contacts_query_h query,
                                break;
                        case CTSVC_PROPERTY_GROUP_NAME:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(group->name);
                                group->name = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_GROUP_RINGTONE:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(group->ringtone_path);
                                group->ringtone_path = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_GROUP_IMAGE:
                                temp = ctsvc_stmt_get_text(stmt, i);
                                if (temp) {
                                        snprintf(full_path, sizeof(full_path), "%s/%s", CTS_GROUP_IMAGE_LOCATION, temp);
+                                       free(group->image_thumbnail_path);
                                        group->image_thumbnail_path = strdup(full_path);
                                }
                                break;
                        case CTSVC_PROPERTY_GROUP_VIBRATION:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(group->vibration);
                                group->vibration = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_GROUP_MESSAGE_ALERT:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(group->message_alert);
                                group->message_alert = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_GROUP_EXTRA_DATA:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(group->extra_data);
                                group->extra_data = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_GROUP_IS_READ_ONLY:
index 704f6ab..0c9dfd6 100644 (file)
@@ -189,6 +189,7 @@ static int __ctsvc_db_grouprelation_get_records_with_query(contacts_query_h quer
                                break;
                        case CTSVC_PROPERTY_GROUP_RELATION_GROUP_NAME:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(group_relation->group_name);
                                group_relation->group_name = SAFE_STRDUP(temp);
                                break;
                        default:
index 4b2d00e..8acc865 100644 (file)
@@ -643,15 +643,16 @@ static int __ctsvc_db_image_get_records_with_query(contacts_query_h query, int o
                                break;
                        case CTSVC_PROPERTY_IMAGE_LABEL:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(image->label);
                                image->label = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_IMAGE_PATH:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(image->path);
                                image->path = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_IMAGE_IS_DEFAULT:
-                               temp = ctsvc_stmt_get_text(stmt, i);
-                               image->is_default = SAFE_STRDUP(temp);
+                               image->is_default = ctsvc_stmt_get_int(stmt, i);
                                break;
                        default:
                                break;
index c618bd2..af4b91c 100644 (file)
@@ -378,10 +378,12 @@ static int __ctsvc_db_messenger_get_records_with_query(contacts_query_h query, i
                                break;
                        case CTSVC_PROPERTY_MESSENGER_LABEL:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(messenger->label);
                                messenger->label = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_MESSENGER_IM_ID:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(messenger->im_id);
                                messenger->im_id = SAFE_STRDUP(temp);
                                break;
                        default:
index 3d6bc88..a2aab2a 100644 (file)
@@ -432,6 +432,10 @@ static void __ctsvc_make_my_profile_display_name(ctsvc_my_profile_s *my_profile)
                if (0 < temp_display_len) {
                        temp_display_len += 7;
                        temp_display = calloc(1, temp_display_len);
+                       if (NULL == temp_display) {
+                               CTS_ERR("calloc() Fail");
+                               return;
+                       }
                        len=0;
 
                        if (name->last) {
@@ -522,6 +526,11 @@ static void __ctsvc_make_my_profile_display_name(ctsvc_my_profile_s *my_profile)
                if (name->prefix && temp_display) {
                        display_len = SAFE_STRLEN(name->prefix) + temp_display_len + 2;
                        display = calloc(1, display_len);
+                       if (NULL == display) {
+                               CTS_ERR("calloc() Fail");
+                               free(temp_display);
+                               return;
+                       }
                        snprintf(display, display_len, "%s %s", name->prefix, temp_display);
                        my_profile->reverse_display_name = display;
                        free(temp_display);
@@ -555,6 +564,10 @@ static void __ctsvc_make_my_profile_display_name(ctsvc_my_profile_s *my_profile)
                                temp_display_len += 6;
                                /* make reverse_temp_display_name */
                                temp_display = calloc(1, temp_display_len);
+                               if (NULL == temp_display) {
+                                       CTS_ERR("calloc() Fail");
+                                       return;
+                               }
                                len = 0;
 
                                if (name->first) {
@@ -590,6 +603,11 @@ static void __ctsvc_make_my_profile_display_name(ctsvc_my_profile_s *my_profile)
                        if (name->prefix && temp_display) {
                                display_len = SAFE_STRLEN(name->prefix) + temp_display_len + 2;
                                display = calloc(1, display_len);
+                               if (NULL == display) {
+                                       CTS_ERR("calloc() Fail");
+                                       free(temp_display);
+                                       return;
+                               }
                                snprintf(display, display_len, "%s %s", name->prefix, temp_display);
                                my_profile->display_name = display;
                                free(temp_display);
@@ -623,6 +641,7 @@ static void __ctsvc_make_my_profile_display_name(ctsvc_my_profile_s *my_profile)
                                ctsvc_nickname_s *nickname = (ctsvc_nickname_s *)cur->data;
                                if (nickname && nickname->nickname) {
                                        ctsvc_record_set_property_flag((ctsvc_record_s *)my_profile, _contacts_my_profile.display_name, CTSVC_PROPERTY_FLAG_DIRTY);
+                                       free(my_profile->display_name);
                                        my_profile->display_name = SAFE_STRDUP(nickname->nickname);
                                        break;
                                }
@@ -635,6 +654,7 @@ static void __ctsvc_make_my_profile_display_name(ctsvc_my_profile_s *my_profile)
                                ctsvc_number_s *number = (ctsvc_number_s *)cur->data;
                                if (number && number->number) {
                                        ctsvc_record_set_property_flag((ctsvc_record_s *)my_profile, _contacts_my_profile.display_name, CTSVC_PROPERTY_FLAG_DIRTY);
+                                       free(my_profile->display_name);
                                        my_profile->display_name = SAFE_STRDUP(number->number);
                                        break;
                                }
@@ -647,6 +667,7 @@ static void __ctsvc_make_my_profile_display_name(ctsvc_my_profile_s *my_profile)
                                ctsvc_email_s *email = (ctsvc_email_s *)cur->data;
                                if (email && email->email_addr) {
                                        ctsvc_record_set_property_flag((ctsvc_record_s *)my_profile, _contacts_my_profile.display_name, CTSVC_PROPERTY_FLAG_DIRTY);
+                                       free(my_profile->display_name);
                                        my_profile->display_name = SAFE_STRDUP(email->email_addr);
                                        break;
                                }
@@ -886,6 +907,10 @@ static int __ctsvc_db_my_profile_get_records_with_query(contacts_query_h query,
 
        if (false == had_my_profile_id) {
                s_query->projection = realloc(s_query->projection, s_query->projection_count+1);
+               if (NULL == s_query->projection) {
+                       CTS_ERR("realloc() Fail");
+                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+               }
                s_query->projection[s_query->projection_count] = CTSVC_PROPERTY_MY_PROFILE_ID;
                s_query->projection_count++;
        }
@@ -932,6 +957,7 @@ static int __ctsvc_db_my_profile_get_records_with_query(contacts_query_h query,
                                break;
                        case CTSVC_PROPERTY_MY_PROFILE_DISPLAY_NAME:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(my_profile->display_name);
                                my_profile->display_name = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_MY_PROFILE_ADDRESSBOOK_ID:
@@ -941,6 +967,7 @@ static int __ctsvc_db_my_profile_get_records_with_query(contacts_query_h query,
                                temp = ctsvc_stmt_get_text(stmt, i);
                                if (temp) {
                                        snprintf(full_path, sizeof(full_path), "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, temp);
+                                       free(my_profile->image_thumbnail_path);
                                        my_profile->image_thumbnail_path = strdup(full_path);
                                }
                                break;
@@ -949,6 +976,7 @@ static int __ctsvc_db_my_profile_get_records_with_query(contacts_query_h query,
                                break;
                        case CTSVC_PROPERTY_MY_PROFILE_UID:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(my_profile->uid);
                                my_profile->uid = SAFE_STRDUP(temp);
                                break;
                        default:
index c55cb85..a1c9429 100644 (file)
@@ -396,34 +396,42 @@ static int __ctsvc_db_name_get_records_with_query(contacts_query_h query, int of
                                break;
                        case CTSVC_PROPERTY_NAME_FIRST:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(name->first);
                                name->first = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_NAME_LAST:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(name->last);
                                name->last = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_NAME_ADDITION:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(name->addition);
                                name->addition = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_NAME_SUFFIX:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(name->suffix);
                                name->suffix = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_NAME_PREFIX:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(name->prefix);
                                name->prefix = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_NAME_PHONETIC_FIRST:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(name->phonetic_first);
                                name->phonetic_first = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_NAME_PHONETIC_MIDDLE:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(name->phonetic_middle);
                                name->phonetic_middle = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_NAME_PHONETIC_LAST:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(name->phonetic_last);
                                name->phonetic_last = SAFE_STRDUP(temp);
                                break;
                        default:
index f027160..afe4db7 100644 (file)
@@ -46,11 +46,19 @@ static inline void __ctsvc_make_name_lookup(int op_code, const char *name_first,
        else {
                if (CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST == op_code) {
                        *name_lookup = calloc(1, SAFE_STRLEN(name_first) + SAFE_STRLEN(name_last) + 3);
+                       if (NULL == *name_lookup) {
+                               CTS_ERR("calloc() Fail");
+                               return;
+                       }
                        snprintf(*name_lookup, SAFE_STRLEN(name_first) + SAFE_STRLEN(name_last) + 3, "%s %c%s",
                                        SAFE_STR(name_first), 0x7E, SAFE_STR(name_last));
                }
                else {
                        *name_lookup = calloc(1, SAFE_STRLEN(name_first) + SAFE_STRLEN(name_last) + 5);
+                       if (NULL == *name_lookup) {
+                               CTS_ERR("calloc() Fail");
+                               return;
+                       }
                        snprintf(*name_lookup, SAFE_STRLEN(name_first) + SAFE_STRLEN(name_last) + 5, "%s,%c %c%s",
                                        SAFE_STR(name_last), 0x7E, 0x7E, SAFE_STR(name_first));
                }
index 593250b..2a7f423 100644 (file)
@@ -382,6 +382,7 @@ static int __ctsvc_db_nickname_get_records_with_query(contacts_query_h query, in
                                break;
                        case CTSVC_PROPERTY_NICKNAME_NAME:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(nickname->nickname);
                                nickname->nickname = SAFE_STRDUP(temp);
                                break;
                        default:
index 2b97ac7..769b6f9 100644 (file)
@@ -380,6 +380,7 @@ static int __ctsvc_db_note_get_records_with_query(contacts_query_h query, int of
                                break;
                        case CTSVC_PROPERTY_NOTE_NOTE:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(note->note);
                                note->note = SAFE_STRDUP(temp);
                                break;
                        default:
index c71f1a0..4b65308 100644 (file)
@@ -572,14 +572,17 @@ static int __ctsvc_db_number_get_records_with_query(contacts_query_h query, int
                                break;
                        case CTSVC_PROPERTY_NUMBER_LABEL:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(number->label);
                                number->label = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_NUMBER_NUMBER:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(number->number);
                                number->number = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_NUMBER_NUMBER_FILTER:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(number->lookup);
                                number->lookup = SAFE_STRDUP(temp);
                                break;
                        default:
index b36ac94..150f125 100644 (file)
@@ -559,10 +559,12 @@ static int __ctsvc_db_person_get_records_with_query(contacts_query_h query, int
                                break;
                        case CTSVC_PROPERTY_PERSON_DISPLAY_NAME:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(person->display_name);
                                person->display_name = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(person->display_name_index);
                                person->display_name_index = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID:
@@ -570,12 +572,14 @@ static int __ctsvc_db_person_get_records_with_query(contacts_query_h query, int
                                break;
                        case CTSVC_PROPERTY_PERSON_RINGTONE:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(person->ringtone_path);
                                person->ringtone_path = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL:
                                temp = ctsvc_stmt_get_text(stmt, i);
                                if (temp && *temp) {
                                        snprintf(full_path, sizeof(full_path), "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, temp);
+                                       free(person->image_thumbnail_path);
                                        person->image_thumbnail_path = strdup(full_path);
                                }
                                break;
@@ -593,18 +597,22 @@ static int __ctsvc_db_person_get_records_with_query(contacts_query_h query, int
                                break;
                        case CTSVC_PROPERTY_PERSON_ADDRESSBOOK_IDS:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(person->addressbook_ids);
                                person->addressbook_ids = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_PERSON_VIBRATION:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(person->vibration);
                                person->vibration = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_PERSON_STATUS:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(person->status);
                                person->status = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_PERSON_MESSAGE_ALERT:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(person->message_alert);
                                person->message_alert = SAFE_STRDUP(temp);
                                break;
                        default:
index b9726b0..de030ec 100644 (file)
@@ -55,10 +55,12 @@ int ctsvc_db_person_create_record_from_stmt_with_projection(cts_stmt stmt, unsig
                        break;
                case CTSVC_PROPERTY_PERSON_DISPLAY_NAME:
                        temp = ctsvc_stmt_get_text(stmt, i);
+                       free(person->display_name);
                        person->display_name = SAFE_STRDUP(temp);
                        break;
                case CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX:
                        temp = ctsvc_stmt_get_text(stmt, i);
+                       free(person->display_name_index);
                        person->display_name_index = SAFE_STRDUP(temp);
                        break;
                case CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID:
@@ -66,25 +68,30 @@ int ctsvc_db_person_create_record_from_stmt_with_projection(cts_stmt stmt, unsig
                        break;
                case CTSVC_PROPERTY_PERSON_RINGTONE:
                        temp = ctsvc_stmt_get_text(stmt, i);
+                       free(person->ringtone_path);
                        person->ringtone_path = SAFE_STRDUP(temp);
                        break;
                case CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL:
                        temp = ctsvc_stmt_get_text(stmt, i);
                        if (temp && *temp) {
                                snprintf(full_path, sizeof(full_path), "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, temp);
+                               free(person->image_thumbnail_path);
                                person->image_thumbnail_path = strdup(full_path);
                        }
                        break;
                case CTSVC_PROPERTY_PERSON_VIBRATION:
                        temp = ctsvc_stmt_get_text(stmt, i);
+                       free(person->vibration);
                        person->vibration = SAFE_STRDUP(temp);
                        break;
                case CTSVC_PROPERTY_PERSON_MESSAGE_ALERT:
                        temp = ctsvc_stmt_get_text(stmt, i);
+                       free(person->message_alert);
                        person->message_alert = SAFE_STRDUP(temp);
                        break;
                case CTSVC_PROPERTY_PERSON_STATUS:
                        temp = ctsvc_stmt_get_text(stmt, i);
+                       free(person->status);
                        person->status = SAFE_STRDUP(temp);
                        break;
                case CTSVC_PROPERTY_PERSON_IS_FAVORITE:
@@ -101,6 +108,7 @@ int ctsvc_db_person_create_record_from_stmt_with_projection(cts_stmt stmt, unsig
                        break;
                case CTSVC_PROPERTY_PERSON_ADDRESSBOOK_IDS:
                        temp = ctsvc_stmt_get_text(stmt, i);
+                       free(person->addressbook_ids);
                        person->addressbook_ids = SAFE_STRDUP(temp);
                        break;
                case CTSVC_PROPERTY_PERSON_FAVORITE_PRIORITY:
@@ -125,8 +133,13 @@ int ctsvc_db_person_create_record_from_stmt_with_query(cts_stmt stmt, contacts_q
        ctsvc_query_s *s_query = (ctsvc_query_s *)query;
 
        if (0 == s_query->projection_count) {
-               unsigned int *projection = malloc(sizeof(unsigned int)*s_query->property_count);
                int i;
+               unsigned int *projection = malloc(sizeof(unsigned int)*s_query->property_count);
+               if (NULL == projection) {
+                       CTS_ERR("malloc() Fail");
+                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+               }
+
                for (i=0;i<s_query->property_count;i++) {
                        projection[i] = s_query->properties[i].property_id;
                }
index 200337b..c92cd1d 100644 (file)
@@ -332,6 +332,7 @@ static int __ctsvc_db_phonelog_get_records_with_query(contacts_query_h query, in
                                break;
                        case CTSVC_PROPERTY_PHONELOG_ADDRESS:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(phonelog->address);
                                phonelog->address = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_PHONELOG_LOG_TIME:
@@ -345,6 +346,7 @@ static int __ctsvc_db_phonelog_get_records_with_query(contacts_query_h query, in
                                break;
                        case CTSVC_PROPERTY_PHONELOG_EXTRA_DATA2:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(phonelog->extra_data2);
                                phonelog->extra_data2 = SAFE_STRDUP(temp);
                                break;
 #ifdef ENABLE_SIM_FEATURE
index 5c4251c..8da6db5 100644 (file)
@@ -378,10 +378,12 @@ static int __ctsvc_db_profile_get_records_with_query(contacts_query_h query, int
                                break;
                        case CTSVC_PROPERTY_PROFILE_UID:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(profile->uid);
                                profile->uid = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_PROFILE_TEXT:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(profile->text);
                                profile->text = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_PROFILE_ORDER:
@@ -389,26 +391,32 @@ static int __ctsvc_db_profile_get_records_with_query(contacts_query_h query, int
                                break;
                        case CTSVC_PROPERTY_PROFILE_SERVICE_OPERATION:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(profile->service_operation);
                                profile->service_operation = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_PROFILE_MIME:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(profile->mime);
                                profile->mime = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_PROFILE_APP_ID:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(profile->app_id);
                                profile->app_id = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_PROFILE_URI:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(profile->uri);
                                profile->uri = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_PROFILE_CATEGORY:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(profile->category);
                                profile->category = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_PROFILE_EXTRA_DATA:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(profile->extra_data);
                                profile->extra_data = SAFE_STRDUP(temp);
                                break;
                        default:
index 7ecc4ce..0217d78 100644 (file)
@@ -380,10 +380,12 @@ static int __ctsvc_db_relationship_get_records_with_query(contacts_query_h query
                                break;
                        case CTSVC_PROPERTY_RELATIONSHIP_LABEL:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(relationship->label);
                                relationship->label = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_RELATIONSHIP_NAME:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(relationship->name);
                                relationship->name = SAFE_STRDUP(temp);
                                break;
                        default:
index fe58dfc..ac673a0 100644 (file)
@@ -364,10 +364,12 @@ static int __ctsvc_db_sdn_get_records_with_query(contacts_query_h query, int off
                                break;
                        case CTSVC_PROPERTY_SDN_NAME:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(sdn->name);
                                sdn->name = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_SDN_NUMBER:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(sdn->number);
                                sdn->number = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_SDN_SIM_SLOT_NO:
index febd68a..426ca0c 100644 (file)
@@ -238,6 +238,7 @@ static int __ctsvc_db_simple_contact_get_records_with_query(contacts_query_h que
                                break;
                        case CTSVC_PROPERTY_CONTACT_DISPLAY_NAME:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(contact->display_name);
                                contact->display_name = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID:
@@ -248,12 +249,14 @@ static int __ctsvc_db_simple_contact_get_records_with_query(contacts_query_h que
                                break;
                        case CTSVC_PROPERTY_CONTACT_RINGTONE:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(contact->ringtone_path);
                                contact->ringtone_path = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL:
                                temp = ctsvc_stmt_get_text(stmt, i);
                                if (temp && *temp) {
                                        snprintf(full_path, sizeof(full_path), "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, temp);
+                                       free(contact->image_thumbnail_path);
                                        contact->image_thumbnail_path = strdup(full_path);
                                }
                                break;
@@ -271,14 +274,17 @@ static int __ctsvc_db_simple_contact_get_records_with_query(contacts_query_h que
                                break;
                        case CTSVC_PROPERTY_CONTACT_UID:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(contact->uid);
                                contact->uid = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_CONTACT_VIBRATION:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(contact->vibration);
                                contact->vibration = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_CONTACT_MESSAGE_ALERT:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(contact->message_alert);
                                contact->message_alert = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_CONTACT_CHANGED_TIME:
index 9acdff9..719f1b7 100644 (file)
@@ -409,10 +409,12 @@ static int __ctsvc_db_speeddial_get_records_with_query(contacts_query_h query,
                                break;
                        case CTSVC_PROPERTY_SPEEDDIAL_NUMBER:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(speeddial->number);
                                speeddial->number = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_SPEEDDIAL_NUMBER_LABEL:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(speeddial->label);
                                speeddial->label = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_SPEEDDIAL_NUMBER_TYPE:
@@ -423,12 +425,14 @@ static int __ctsvc_db_speeddial_get_records_with_query(contacts_query_h query,
                                break;
                        case CTSVC_PROPERTY_SPEEDDIAL_DISPLAY_NAME:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(speeddial->display_name);
                                speeddial->display_name = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_SPEEDDIAL_IMAGE_THUMBNAIL:
                                temp = ctsvc_stmt_get_text(stmt, i);
                                if (temp) {
                                        snprintf(full_path, sizeof(full_path), "%s/%s", CTSVC_CONTACT_IMG_FULL_LOCATION, temp);
+                                       free(speeddial->image_thumbnail_path);
                                        speeddial->image_thumbnail_path = strdup(full_path);
                                }
                                break;
index d267323..49b7463 100644 (file)
@@ -378,10 +378,12 @@ static int __ctsvc_db_url_get_records_with_query(contacts_query_h query, int off
                                break;
                        case CTSVC_PROPERTY_URL_LABEL:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(url->label);
                                url->label = SAFE_STRDUP(temp);
                                break;
                        case CTSVC_PROPERTY_URL_URL:
                                temp = ctsvc_stmt_get_text(stmt, i);
+                               free(url->url);
                                url->url = SAFE_STRDUP(temp);
                                break;
                        default:
index eb0d046..b9e3ee5 100644 (file)
@@ -676,6 +676,12 @@ static inline int __ctsvc_db_create_composite_condition(ctsvc_composite_filter_s
 
        buf_size = CTSVC_FILTER_LENGTH;
        out_cond = calloc(1, buf_size);
+       if (NULL == out_cond) {
+               CTS_ERR("calloc() Fail");
+               free(cond);
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
+
        len = 0;
        if (cond) {
                temp_len = SAFE_SNPRINTF(&out_cond, &buf_size, len, "(");
@@ -945,6 +951,11 @@ int ctsvc_db_make_get_records_query_stmt(ctsvc_query_s *s_query, int offset, int
 
        query_size = CTS_SQL_MAX_LEN;
        query = calloc(1, query_size);
+       if (NULL == query) {
+               CTS_ERR("calloc() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
+
        len = 0;
        if (s_query->distinct)
                temp_len = SAFE_SNPRINTF(&query, &query_size, len, "SELECT DISTINCT ");
@@ -1342,6 +1353,10 @@ static int __ctsvc_db_append_search_query(const char *src, char **query, int *qu
 
        char *search_keyword = NULL;
        search_keyword = __ctsvc_db_make_search_keyword(keyword);
+       if (NULL == search_keyword) {
+               CTS_ERR("__ctsvc_db_make_search_keyword() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
 
        if (phonenumber) {
                temp_len = SAFE_SNPRINTF(query, query_size, len, "(SELECT contact_id FROM ");
@@ -1738,6 +1753,11 @@ static int __ctsvc_db_search_records_append_sort(const char *view_uri,
                }
                else {
                        temp_keyword = __ctsvc_db_get_str_with_escape((char*)keyword, strlen((char*)keyword), true);
+                       if (NULL == temp_keyword) {
+                               CTS_ERR("__ctsvc_db_get_str_with_escape() Fail");
+                               return CONTACTS_ERROR_OUT_OF_MEMORY;
+                       }
+
                        char temp_str[CTS_SQL_MIN_LEN + (strlen(field) + strlen(temp_keyword)) * SORT_CHECK_LEN];
                        snprintf(temp_str, sizeof(temp_str),
                                                        " ORDER BY "
@@ -1795,6 +1815,11 @@ static int __ctsvc_db_search_records_exec(const char *view_uri, const property_i
 
        query_size = CTS_SQL_MAX_LEN;
        query = calloc(1, query_size);
+       if (NULL == query) {
+               CTS_ERR("calloc() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
+
        len = 0;
 
        if (STRING_EQUAL == strcmp(keyword, "+")) {
@@ -1878,6 +1903,11 @@ static int __ctsvc_db_search_records_exec(const char *view_uri, const property_i
                        }
                        else {
                                char *temp_keyword = __ctsvc_db_get_str_with_escape((char*)keyword, strlen((char*)keyword), true);
+                               if (NULL == temp_keyword) {
+                                       CTS_ERR("__ctsvc_db_get_str_with_escape() Fail");
+                                       free(query);
+                                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+                               }
                                temp_len = SAFE_SNPRINTF(&query, &query_size, len, " SELECT * FROM ");
                                if (0 <= temp_len) len+= temp_len;
                                temp_len = SAFE_SNPRINTF(&query, &query_size, len, table);
@@ -1953,6 +1983,11 @@ static int __ctsvc_db_search_records_exec(const char *view_uri, const property_i
                if (range & CONTACTS_SEARCH_RANGE_EMAIL) {
                        /* search contact which has email address started with keyword */
                        char *temp_keyword = __ctsvc_db_get_str_with_escape((char*)keyword, strlen((char*)keyword), true);
+                       if (NULL == temp_keyword) {
+                               CTS_ERR("__ctsvc_db_get_str_with_escape() Fail");
+                               free(query);
+                               return CONTACTS_ERROR_OUT_OF_MEMORY;
+                       }
                        temp_len = SAFE_SNPRINTF(&query, &query_size, len, "SELECT * FROM ");
                        if (0 <= temp_len) len+= temp_len;
                        temp_len = SAFE_SNPRINTF(&query, &query_size, len, table);
@@ -2186,6 +2221,11 @@ static inline int __ctsvc_db_search_records_with_query_exec(ctsvc_query_s *s_que
 
        query_size = CTS_SQL_MAX_LEN;
        query = calloc(1, query_size);
+       if (NULL == query) {
+               CTS_ERR("calloc() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
+
        len = 0;
 
        if (s_query->distinct)
@@ -2639,6 +2679,11 @@ static int __ctsvc_db_get_count_with_query_exec(ctsvc_query_s *s_query, const ch
 
        query_size = CTS_SQL_MAX_LEN;
        query = calloc(1, query_size);
+       if (NULL == query) {
+               CTS_ERR("calloc() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
+
        len = 0;
        if (s_query->distinct) {
                temp_len = SAFE_SNPRINTF(&query, &query_size, len, "SELECT COUNT(*) FROM (SELECT DISTINCT ");
index fe8a972..268d9a3 100644 (file)
@@ -93,6 +93,10 @@ static inline int __ctsvc_collation_str(const char *src, char **dest)
        UCollator *collator;
 
        char *region = strdup(ctsvc_get_langset());
+       if (NULL == region) {
+               CTS_ERR("strdup() Fail");
+               return CONTACTS_ERROR_OUT_OF_MEMORY;
+       }
 
        char *dot = strchr(region, '.');
        if (dot)
index 34fd833..821d767 100644 (file)
@@ -55,6 +55,7 @@ static TLS bool company_change = false;
 static inline void __ctsvc_noti_publish_contact_change(void)
 {
        int fd = open(CTSVC_NOTI_CONTACT_CHANGED, O_TRUNC | O_RDWR);
+
        if (0 <= fd) {
                close(fd);
                contact_change = false;
index e004349..203884c 100644 (file)
@@ -200,6 +200,10 @@ void ctsvc_utils_make_image_file_name(int parent_id, int id, char *src_img, char
                ext = "";
 
        lower_ext = strdup(ext);
+       if (NULL == lower_ext) {
+               CTS_ERR("strdup() Fail");
+               return;
+       }
        temp = lower_ext;
        while (*temp) {
                *temp = tolower(*temp);
@@ -592,7 +596,7 @@ static bool _ctsvc_image_util_supported_jpeg_colorspace_cb(
        int height = 0;
        int dest_fd = 0;
        int mimetype = 0;
-       unsigned int size = 0;
+       uint64_t size = 0;
        void *buffer = NULL;
        void *buffer_temp = NULL;
        int ret;
@@ -606,7 +610,7 @@ static bool _ctsvc_image_util_supported_jpeg_colorspace_cb(
        }
 
        ret = image_util_decode_jpeg(info->src, colorspace, (unsigned char **)&buffer, &width,
-                       &height, &size);
+                       &height, (unsigned int *)&size);
        if (IMAGE_UTIL_ERROR_NONE != ret) {
                info->ret = CONTACTS_ERROR_SYSTEM;
                return true;
@@ -625,7 +629,7 @@ static bool _ctsvc_image_util_supported_jpeg_colorspace_cb(
                        return false;
                }
 
-               packet = _ctsvc_image_create_media_packet(fmt, buffer, size);
+               packet = _ctsvc_image_create_media_packet(fmt, buffer, (unsigned int)size);
                if (NULL == packet) {
                        CTS_ERR("_ctsvc_image_create_media_packet() Fail");
                        media_format_unref(fmt);
@@ -634,7 +638,7 @@ static bool _ctsvc_image_util_supported_jpeg_colorspace_cb(
                        return false;
                }
 
-               ret = _ctsvc_image_rotate(packet, rotation, &buffer_temp, (uint64_t *)&size);
+               ret = _ctsvc_image_rotate(packet, rotation, &buffer_temp, &size);
 
                media_packet_destroy(packet);
                media_format_unref(fmt);
@@ -684,7 +688,7 @@ static bool _ctsvc_image_util_supported_jpeg_colorspace_cb(
                        return false;
                }
 
-               packet = _ctsvc_image_create_media_packet(fmt, buffer, size);
+               packet = _ctsvc_image_create_media_packet(fmt, buffer, (unsigned int)size);
                if (NULL == packet) {
                        CTS_ERR("_ctsvc_image_create_media_packet() Fail");
                        media_format_unref(fmt);
@@ -694,7 +698,7 @@ static bool _ctsvc_image_util_supported_jpeg_colorspace_cb(
                }
 
                ret = _ctsvc_image_resize(packet, resized_width, resized_height, &buffer_temp,
-                               (uint64_t *)&size);
+                               &size);
 
                media_packet_destroy(packet);
                media_format_unref(fmt);
index d70c662..be88ef8 100644 (file)
@@ -339,6 +339,11 @@ static process_stat* __ctsvc_get_cpu_stat()
        }
 
        result = calloc(1, sizeof(process_stat));
+       if (NULL == result)
+       {
+               CTS_ERR("calloc() Fail");
+               return NULL;
+       }
        for (i=0; i < 10;i++) {
                if (i < 3)
                        result->cpu_work_time += cpu_time[i];
index c6ad2aa..55e6911 100644 (file)
@@ -158,6 +158,11 @@ void ctsvc_server_sim_record_destroy(sim_contact_s *record)
 static sim_contact_s * __ctsvc_server_sim_record_clone(TelSimPbRecord_t *sim_record)
 {
        sim_contact_s *record = calloc(1,sizeof(sim_contact_s));
+       if (NULL == record)
+       {
+               CTS_ERR("calloc() Fail");
+               return NULL;
+       }
 
        record->sim_index = sim_record->index;
        record->name = SAFE_STRDUP((char*)sim_record->name);
@@ -861,6 +866,12 @@ static int __ctsvc_server_sim_info_init()
        while (cp_name[cp_index]) {
                TapiHandle *handle;
                ctsvc_sim_info_s *info = calloc(1, sizeof(ctsvc_sim_info_s));
+               if (NULL == info)
+               {
+                       CTS_ERR("calloc() Fail");
+                       g_strfreev(cp_name);
+                       return CONTACTS_ERROR_OUT_OF_MEMORY;
+               }
                info->cp_name = strdup(cp_name[cp_index]);
                INFO("SIM cp_name[%d] : %s", cp_index, info->cp_name);
                info->sim_slot_no = cp_index;
index 0ca9f35..befd2b8 100644 (file)
@@ -68,6 +68,11 @@ static void __ctsvc_server_change_language_cb(keynode_t *key, void *data)
        char *langset = NULL;
 
        new_langset = vconf_keynode_get_str(key);
+       if (NULL == new_langset)
+       {
+               CTS_ERR("vconf_keynode_get_str() Fail");
+               return;
+       }
        langset = ctsvc_get_langset();
        INFO("%s --> %s", langset, new_langset);
        if (STRING_EQUAL != strcmp(langset, new_langset)) {