-
-
Notifications
You must be signed in to change notification settings - Fork 32k
get_obs_local_part fails to handle empty local part #86650
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
parse_message_id in the email module crashes with bogus message-id Having a Message-ID '<[>' gives me an IndexError: list index out of range This happens when
this doesn't happen with python 3.6 or 3.7 when MessageIDHeader didn't exist 3.8/Lib/email/headerregistry.py line 542 _default_header_map = {
....
'message-id': MessageIDHeader,
} Traceback (most recent call last):
File "/usr/lib/python3.8/email/_header_value_parser.py", line 2069, in get_msg_id
token, value = get_dot_atom_text(value)
File "/usr/lib/python3.8/email/_header_value_parser.py", line 1334, 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 "main.py", line 4, in <module>
msg['Message-ID'] = '<[>'
File "/usr/lib/python3.8/email/message.py", line 409, in __setitem__
self._headers.append(self.policy.header_store_parse(name, val))
File "/usr/lib/python3.8/email/policy.py", line 148, in header_store_parse
return (name, self.header_factory(name, value))
File "/usr/lib/python3.8/email/headerregistry.py", line 607, in __call__
return self[name](name, value)
File "/usr/lib/python3.8/email/headerregistry.py", line 202, in __new__
cls.parse(value, kwds)
File "/usr/lib/python3.8/email/headerregistry.py", line 535, in parse
kwds['parse_tree'] = parse_tree = cls.value_parser(value)
File "/usr/lib/python3.8/email/_header_value_parser.py", line 2126, in parse_message_id
token, value = get_msg_id(value)
File "/usr/lib/python3.8/email/_header_value_parser.py", line 2073, in get_msg_id
token, value = get_obs_local_part(value)
File "/usr/lib/python3.8/email/_header_value_parser.py", line 1516, in get_obs_local_part
if (obs_local_part[0].token_type == 'dot' or
IndexError: list index out of range as you can see in the traceback def get_obs_local_part(value):
obs_local_part = ObsLocalPart()
while value and (value[0]=='\\' or value[0] not in PHRASE_ENDS):
...
if (obs_local_part[0].token_type == 'dot':
... if value does not satisfy the condition in the while loop, shouldn't we have a proper Error or default back to no parsing if parsing fails? |
Yep, you've found another in a category of bugs that have shown up in the parser: places where there is a missing check for there being any value at all before checking character [0]. In this case, the fix should be to add if not obs_local_part:
return obs_local_part, value just before the if that is blowing up. |
I am currently experiencing this issue, has this been looked at yet? Is there a workaround? |
Duplicate of #105802 |
In particularly, one-off addresses generated by Microsoft Outlook: https://learn.microsoft.com/en-us/office/client-developer/outlook/mapi/one-off-addresses
…H-117934) In particularly, one-off addresses generated by Microsoft Outlook: https://learn.microsoft.com/en-us/office/client-developer/outlook/mapi/one-off-addresses Co-authored-by: fsc-eriker <[email protected]>
…-ID (pythonGH-117934) In particularly, one-off addresses generated by Microsoft Outlook: https://learn.microsoft.com/en-us/office/client-developer/outlook/mapi/one-off-addresses (cherry picked from commit f74e512) Co-authored-by: Serhiy Storchaka <[email protected]> Co-authored-by: fsc-eriker <[email protected]>
…e-ID (GH-117934) (GH-117965) In particularly, one-off addresses generated by Microsoft Outlook: https://learn.microsoft.com/en-us/office/client-developer/outlook/mapi/one-off-addresses (cherry picked from commit f74e512) Co-authored-by: Serhiy Storchaka <[email protected]> Co-authored-by: fsc-eriker <[email protected]>
…-ID (pythonGH-117934) In particularly, one-off addresses generated by Microsoft Outlook: https://learn.microsoft.com/en-us/office/client-developer/outlook/mapi/one-off-addresses Co-authored-by: fsc-eriker <[email protected]>
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
Linked PRs
The text was updated successfully, but these errors were encountered: