Skip to content

UnboundLocalError in email._header_value_parser.parse_message_id #134152

Open
@gabe-sherman

Description

@gabe-sherman

During fuzzing of Python standard libraries, the following code snippet causes an UnboundLocalError with the following message: UnboundLocalError: cannot access local variable 'pos' where it is not associated with a value'. This occurs in the _get_ptext_to_endchars function at line 1035 in email/_header_value_parser.py.

import email._header_value_parser
email._header_value_parser.parse_message_id("<T@[")

Exception Trace

Traceback (most recent call last):
  File "/usr/lib/python3.12/email/_header_value_parser.py", line 2118, in get_msg_id
    token, value = get_dot_atom_text(value)
                   ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/email/_header_value_parser.py", line 1344, in get_dot_atom_text
    raise errors.HeaderParseError("expected atom at a start of "
email.errors.HeaderParseError: expected atom at a start of dot-atom-text but found '['

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "rep.py", line 2, in <module>
    email._header_value_parser.parse_message_id("<T@[")
  File "/usr/lib/python3.12/email/_header_value_parser.py", line 2149, in parse_message_id
    token, value = get_msg_id(value)
                   ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/email/_header_value_parser.py", line 2121, in get_msg_id
    token, value = get_no_fold_literal(value)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/email/_header_value_parser.py", line 2066, in get_no_fold_literal
    token, value = get_dtext(value)
                   ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/email/_header_value_parser.py", line 1557, in get_dtext
    ptext, value, had_qp = _get_ptext_to_endchars(value, '[]')
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/email/_header_value_parser.py", line 1033, in _get_ptext_to_endchars
    pos = pos + 1
          ^^^
UnboundLocalError: cannot access local variable 'pos' where it is not associated with a value

CPython versions tested on:

3.12, 3.11, 3.10, 3.9

Operating systems tested on:

Linux

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibPython modules in the Lib dirtopic-emailtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions