Skip to content

fix: restore RFC 6532 internationalized mailbox parsing - #178

Merged
fedelemantuano merged 1 commit into
developfrom
bugfix/issue_#177
Oct 1, 2026
Merged

fedelemantuano merged 1 commit into
developfrom
bugfix/issue_#177

Conversation

@fedelemantuano

@fedelemantuano fedelemantuano commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

The forensic scanner introduced for issue #175 restricted atoms to ASCII, dropping valid UTF-8 local parts and domains in 4.7.0. Extend atoms to Unicode scalar values and preserve mailbox identity across byte decoding and whitespace handling.

Retain invalid UTF-8 as explicit defect evidence, including group labels and comments, without losing valid neighbouring mailboxes. Add regression coverage for issue #177 and document the recovery behavior.

Reviewed RFC 5322 sections 3.2-3.4, 4 and 5; RFC 6532 sections 3.1-3.2 and 4; RFC 3629 scalar restrictions; RFC 6854 and applicable errata. Verified conforming UTF-8, obsolete routes, malformed inputs and recovery metadata. The pre-existing isolated-surrogate failure in parse_from_string remains outside this change.

Validation: 951 tests pass on Python 3.13 and 3.14; pre-commit and Pyright pass. Independent security review found no remaining introduced High/Medium findings after malformed-byte fuzzing and bounded scaling probes.

@rosscaleca can you test this branch? Maybe you have a lot of data that can be used to find other bugs and/or regresssions.

The forensic scanner introduced for issue #175 restricted atoms to ASCII, dropping valid UTF-8 local parts and domains in 4.7.0. Extend atoms to Unicode scalar values and preserve mailbox identity across byte decoding and whitespace handling.

Retain invalid UTF-8 as explicit defect evidence, including group labels and comments, without losing valid neighbouring mailboxes. Add regression coverage for issue #177 and document the recovery behavior.

Reviewed RFC 5322 sections 3.2-3.4, 4 and 5; RFC 6532 sections 3.1-3.2 and 4; RFC 3629 scalar restrictions; RFC 6854 and applicable errata. Verified conforming UTF-8, obsolete routes, malformed inputs and recovery metadata. The pre-existing isolated-surrogate failure in parse_from_string remains outside this change.

Validation: 951 tests pass on Python 3.13 and 3.14; pre-commit and Pyright pass. Independent security review found no remaining introduced High/Medium findings after malformed-byte fuzzing and bounded scaling probes.
@coveralls

Copy link
Copy Markdown

Coverage Status

coverage: 99.765% (-0.05%) from 99.818% — bugfix/issue_#177 into develop

@fedelemantuano
fedelemantuano merged commit 86c74af into develop Oct 1, 2026
8 checks passed
@fedelemantuano
fedelemantuano deleted the bugfix/issue_#177 branch October 1, 2026 19:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants