add handling when realloc() returns NULL 27/101327/1
authorJongkyu Koo <jk.koo@samsung.com>
Wed, 30 Nov 2016 09:47:45 +0000 (18:47 +0900)
committerJongkyu Koo <jk.koo@samsung.com>
Thu, 1 Dec 2016 00:58:04 +0000 (16:58 -0800)
Change-Id: Ia611c453a7176c455ef8f15be7cbb6d3f863bf3e
Signed-off-by: Jongkyu Koo <jk.koo@samsung.com>
server/ctsvc_server_person.c

index 23c342b..5597d18 100644 (file)
@@ -836,14 +836,24 @@ int ctsvc_person_aggregate(int person_id)
                }
 
                addr_len = snprintf(addr, sizeof(addr), "%d%s", addressbook_id, ADDRESSBOOK_ID_DELIM);
-               if (NULL == addressbook_ids)
+               if (NULL == addressbook_ids) {
                        addressbook_ids = calloc(addressbooks_len+1, sizeof(char));
+                       if (NULL == addressbook_ids)
+                               ERR("alloc() failed");
+               }
                else if (addressbooks_len <= strlen(addressbook_ids)+addr_len) {
-                       addressbooks_len = MAX(addressbooks_len*2, strlen(addressbook_ids)+addr_len+1);
-                       addressbook_ids = realloc(addressbook_ids, addressbooks_len);
+                       int new_addressbooks_len = MAX(addressbooks_len*2, strlen(addressbook_ids)+addr_len+1);
+                       char *new_addressbook_ids = realloc(addressbook_ids, new_addressbooks_len);
+                       if (new_addressbook_ids) {
+                               addressbook_ids = new_addressbook_ids;
+                               addressbooks_len = new_addressbooks_len
+                       } else {
+                               ERR("realloc() failed");
+                       }
                }
 
-               len += snprintf(addressbook_ids + len, addressbooks_len -len, "%d%s", addressbook_id, ADDRESSBOOK_ID_DELIM);
+               if (addressbook_ids && addressbooks_len -len > addr_len)
+                       len += snprintf(addressbook_ids + len, addressbooks_len -len, "%d%s", addressbook_id, ADDRESSBOOK_ID_DELIM);
 
                if (NULL == image_thumbnail_path && contact_image_thumbnail_path && *contact_image_thumbnail_path) {
                        image_thumbnail_path = SAFE_STRDUP(contact_image_thumbnail_path);