summaryrefslogtreecommitdiff
path: root/src/plugins/ds-public/vcard/src/plugin_interface.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/ds-public/vcard/src/plugin_interface.c')
-rwxr-xr-xsrc/plugins/ds-public/vcard/src/plugin_interface.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/plugins/ds-public/vcard/src/plugin_interface.c b/src/plugins/ds-public/vcard/src/plugin_interface.c
index 5131f38..1f22810 100755
--- a/src/plugins/ds-public/vcard/src/plugin_interface.c
+++ b/src/plugins/ds-public/vcard/src/plugin_interface.c
@@ -749,9 +749,10 @@ static int _contacts_vcard_get_content(const char *vcard_stream, const char *con
cursor++;
}
len = cursor - found;
- if (len < buf_size)
- memcpy(value, found, len);
- else {
+ if (len < buf_size) {
+ if(value)
+ memcpy(value, found, len);
+ } else {
value = realloc(value, len + 1);
if (value) {
buf_size = len + 1;
@@ -761,13 +762,17 @@ static int _contacts_vcard_get_content(const char *vcard_stream, const char *con
continue;
}
}
- value[len] = '\0';
- if (fn)
+
+ if (value)
+ value[len] = '\0';
+
+ if (fn) {
if (fn(value + type_len + 1, data)) {
free(value);
_INNER_FUNC_EXIT;
return 0;
}
+ }
vcard_stream = found + type_len;
}