*detail_r = p+1;
}
- if (address->domain == NULL)
+ if (address->domain == NULL || *address->domain == '\0')
*username_r = user;
else if (strchr(user, '@') == NULL) {
/* username is just glued to the domain... no SMTP escaping */
if (quoted)
str_append_c(out, '\"');
- if (address->domain == NULL)
+ if (address->domain == NULL || *address->domain == '\0')
return;
str_append_c(out, '@');
const char *localpart, const char *domain)
{
i_zero(address);
+ if (localpart == NULL || *localpart == '\0')
+ return;
+
address->localpart = localpart;
- address->domain = (localpart == NULL ? NULL : domain);
+ if (domain != NULL && *domain != '\0')
+ address->domain = domain;
}
int smtp_address_init_from_msg(struct smtp_address *address,
const char *p;
i_zero(address);
- if (msg_addr->mailbox == NULL)
+ if (msg_addr->mailbox == NULL || *msg_addr->mailbox == '\0')
return 0;
/* The message_address_parse() function allows UTF-8 codepoints in
}
address->localpart = msg_addr->mailbox;
- address->domain = msg_addr->domain;
+ if (msg_addr->domain != NULL && *msg_addr->domain != '\0')
+ address->domain = msg_addr->domain;
return 0;
}
/* @UNSAFE */
size = sizeof(struct smtp_address);
- if (src->localpart != NULL) {
+ if (src->localpart != NULL && *src->localpart != '\0') {
lpsize = strlen(src->localpart) + 1;
size = MALLOC_ADD(size, lpsize);
}
- if (src->domain != NULL) {
+ if (src->domain != NULL && *src->domain != '\0') {
dsize = strlen(src->domain) + 1;
size = MALLOC_ADD(size, dsize);
}
- if (src->raw != NULL) {
+ if (src->raw != NULL && *src->raw != '\0') {
rsize = strlen(src->raw) + 1;
size = MALLOC_ADD(size, rsize);
}
return NULL;
new = t_new(struct smtp_address, 1);
- new->localpart = t_strdup(src->localpart);
- new->domain = t_strdup(src->domain);
- new->raw = t_strdup(src->raw);
+ new->localpart = t_strdup_empty(src->localpart);
+ new->domain = t_strdup_empty(src->domain);
+ new->raw = t_strdup_empty(src->raw);
return new;
}
new_addr = p_new(pool, struct smtp_address, 1);
new_addr->localpart = p_strconcat(pool, address->localpart, delim,
detail, NULL);
- new_addr->domain = p_strdup(pool, address->domain);
+ new_addr->domain = p_strdup_empty(pool, address->domain);
return new_addr;
}
new_addr = t_new(struct smtp_address, 1);
new_addr->localpart = t_strconcat(address->localpart, delim, detail,
NULL);
- new_addr->domain = t_strdup(address->domain);
+ new_addr->domain = t_strdup_empty(address->domain);
return new_addr;
}