}
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);