Skip to content

[3.14] bpo-39100: _header_value_parser: do not treat a Group as invalid-mailbox (GH-24872)#149191

Merged
bitdancer merged 1 commit intopython:3.14from
miss-islington:backport-b413bc7-3.14
Apr 30, 2026
Merged

[3.14] bpo-39100: _header_value_parser: do not treat a Group as invalid-mailbox (GH-24872)#149191
bitdancer merged 1 commit intopython:3.14from
miss-islington:backport-b413bc7-3.14

Conversation

@miss-islington
Copy link
Copy Markdown
Contributor

When an address in an address-list has garbage at the end, the code will
currently:

  1. change the mailbox in the last parsed address into invalid-mailbox by
    overriding its token_type;
  2. wrap the trailing garbage into another invalid-mailbox and append it
    to the last parsed address.

However, that does not take into account that an address may
also contain a Group instead of a single mailbox. In that case,
overwriting token_type leads to undesirable results, e.g. parsing an
email with the following 'To' header:

unlisted-recipients:; (no To-header on input)

raises an AttributeError from trying to treat the Group as a Mailbox.

Moreover it is questionable whether the previously parsed mailbox should
be treated as invalid in addition to the trailing garbage.

Address both of the above by wrapping the trailing garbage in a new
Address with a single invalid-mailbox, and append it to the AddressList
directly.

Changes the results of the
test_get_address_list_mailboxes_invalid_addresses test, where the
address list is now parsed into 4 mailboxes instead of 3 (all but the
first one are invalid).
(cherry picked from commit b413bc7)

Co-authored-by: elenril anton@khirnov.net

…box (pythonGH-24872)

When an address in an address-list has garbage at the end, the code will
currently:

1. change the mailbox in the last parsed address into invalid-mailbox by
   overriding its token_type;
2. wrap the trailing garbage into another invalid-mailbox and append it
   to the last parsed address.

However, that does not take into account that an address may
also contain a Group instead of a single mailbox. In that case,
overwriting token_type leads to undesirable results, e.g. parsing an
email with the following 'To' header:

unlisted-recipients:; (no To-header on input)

raises an AttributeError from trying to treat the Group as a Mailbox.

Moreover it is questionable whether the previously parsed mailbox should
be treated as invalid in addition to the trailing garbage.

Address both of the above by wrapping the trailing garbage in a new
Address with a single invalid-mailbox, and append it to the AddressList
directly.

Changes the results of the
test_get_address_list_mailboxes_invalid_addresses test, where the
address list is now parsed into 4 mailboxes instead of 3 (all but the
first one are invalid).
(cherry picked from commit b413bc7)

Co-authored-by: elenril <anton@khirnov.net>
@bitdancer bitdancer merged commit fa000ef into python:3.14 Apr 30, 2026
53 checks passed
@miss-islington miss-islington deleted the backport-b413bc7-3.14 branch April 30, 2026 18:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants