If tag value is empty there is possibility to quickly create
empty tag without entering to rest of the logic.
Checking for empty parameter at the begining is included
basicaly in every print tag function in code - here somehow
was missing.
---
plugins/vcard.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/plugins/vcard.c b/plugins/vcard.c
index f1d9edc..c0a33cb 100644
--- a/plugins/vcard.c
+++ b/plugins/vcard.c
@@ -392,6 +392,11 @@ static void vcard_printf_fullname(GString *vcards, uint8_t format,
{
char field[LEN_MAX];
+ if (!text || strlen(text) == 0) {
+ vcard_printf(vcards, "FN:");
+ return;
+ }
+
if (select_qp_encoding(format, text, NULL)) {
vcard_qp_print_encoded(vcards, "FN", text, NULL);
return;
--
1.7.0.4
Hi Radek,
On Mon, Oct 10, 2011, Radoslaw Jablonski wrote:
> If tag value is empty there is possibility to quickly create
> empty tag without entering to rest of the logic.
> Checking for empty parameter at the begining is included
> basicaly in every print tag function in code - here somehow
> was missing.
> ---
> plugins/vcard.c | 5 +++++
> 1 files changed, 5 insertions(+), 0 deletions(-)
Both patches have been applied. Thanks.
Johan
Without that checking strlen(..) could be called with NULL
as param and this will result crash (in some scenarios
'field' may be NULL)
---
plugins/vcard.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/plugins/vcard.c b/plugins/vcard.c
index c0a33cb..dc20a77 100644
--- a/plugins/vcard.c
+++ b/plugins/vcard.c
@@ -680,8 +680,11 @@ static void vcard_printf_address(GString *vcards, uint8_t format,
for (l = address->fields; l; l = l->next) {
char *field = l->data;
- set_escape(format, field_esc, field, LEN_MAX, strlen(field));
- g_strlcat(fields, field_esc, len);
+ if (field) {
+ set_escape(format, field_esc, field, LEN_MAX,
+ strlen(field));
+ g_strlcat(fields, field_esc, len);
+ }
if (l->next)
/* not adding ';' after last addr field */
--
1.7.0.4