More protection against bad parsing. Can't reproduce the actual bug.

ENGINE-814
Krista Bennett 2 years ago
parent 0ddef895f7
commit 457fa437b5

@ -2361,35 +2361,38 @@ static identity_list * mal_to_identity_list(
pEp_identity *ident;
struct mailimf_address *addr = clist_content(cur);
switch(addr->ad_type) {
case MAILIMF_ADDRESS_MAILBOX:
ident = mailbox_to_identity(addr->ad_data.ad_mailbox);
if (ident == NULL)
goto enomem;
_il = identity_list_add(_il, ident);
if (_il == NULL)
goto enomem;
break;
if (addr) {
switch (addr->ad_type) {
case MAILIMF_ADDRESS_MAILBOX:
ident = mailbox_to_identity(addr->ad_data.ad_mailbox);
if (ident == NULL)
goto enomem;
_il = identity_list_add(_il, ident);
if (_il == NULL)
goto enomem;
break;
case MAILIMF_ADDRESS_GROUP:
{
struct mailimf_mailbox_list * mbl =
case MAILIMF_ADDRESS_GROUP: {
struct mailimf_mailbox_list *mbl =
addr->ad_data.ad_group->grp_mb_list;
for (clistiter *cur2 = clist_begin(mbl->mb_list); cur2 != NULL;
cur2 = clist_next(cur2)) {
ident = mailbox_to_identity(clist_content(cur));
if (ident == NULL)
goto enomem;
_il = identity_list_add(_il, ident);
if (_il == NULL)
goto enomem;
if (mbl) {
for (clistiter *cur2 = clist_begin(mbl->mb_list); cur2 != NULL;
cur2 = clist_next(cur2)) {
ident = mailbox_to_identity(clist_content(cur));
if (ident == NULL)
goto enomem;
_il = identity_list_add(_il, ident);
if (_il == NULL)
goto enomem;
}
}
}
break;
break;
default:
assert(0);
goto enomem;
default:
assert(0);
goto enomem;
}
}
}
@ -2529,7 +2532,7 @@ static PEP_STATUS read_fields(message *msg, clist *fieldlist)
{
struct mailimf_address_list *mal =
_field->fld_data.fld_to->to_addr_list;
identity_list *il = mal_to_identity_list(mal);
identity_list *il = mal ? mal_to_identity_list(mal) : new_identity_list(NULL);
if (il == NULL)
goto enomem;

Loading…
Cancel
Save