-
-
Notifications
You must be signed in to change notification settings - Fork 32.5k
Closed
Labels
stdlibPython modules in the Lib dirPython modules in the Lib dirtopic-emailtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
Bug description:
During fuzzing of Python standard libraries, the following code snippet causes a TypeError with the following message: TypeError: '<' not supported between instances of 'NoneType' and 'int'
. This occurs in the decode_params
function at line 419 in email/utils.py
.
import sys
import io
import email
d = io.StringIO(open(sys.argv[1], "r").read())
email.message_from_file(d)
POC File:
https://github.com/FuturesLab/POC/blob/main/py-email/poc-02
Exception Trace
Traceback (most recent call last):
File "rep.py", line 5, in <module>
email.message_from_file(d)
File "/usr/lib/python3.12/email/__init__.py", line 53, in message_from_file
return Parser(*args, **kws).parse(fp)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/email/parser.py", line 54, in parse
return feedparser.close()
^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/email/feedparser.py", line 185, in close
self._call_parse()
File "/usr/lib/python3.12/email/feedparser.py", line 178, in _call_parse
self._parse()
File "/usr/lib/python3.12/email/feedparser.py", line 304, in _parsegen
boundary = self._cur.get_boundary()
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/email/message.py", line 861, in get_boundary
boundary = self.get_param('boundary', missing)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/email/message.py", line 725, in get_param
for k, v in self._get_params_preserve(failobj, header):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/email/message.py", line 674, in _get_params_preserve
params = utils.decode_params(params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/email/utils.py", line 419, in decode_params
continuations.sort()
TypeError: '<' not supported between instances of 'NoneType' and 'int'
CPython versions tested on:
3.12, 3.11, 3.10, 3.9
Operating systems tested on:
Linux
Linked PRs
- gh-134151 Fix TypeError in email.utils.decode_params() when sorting RFC 2231 continuations #134687
- [3.14] gh-134151 Fix
TypeError
inemail.utils.decode_params
when sorting RFC 2231 continuations (GH-134687) #135247 - [3.13] gh-134151 Fix
TypeError
inemail.utils.decode_params
when sorting RFC 2231 continuations (GH-134687) #135248
Metadata
Metadata
Assignees
Labels
stdlibPython modules in the Lib dirPython modules in the Lib dirtopic-emailtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Projects
Milestone
Relationships
Development
Select code repository
Activity
picnixz commentedon May 18, 2025
@bitdancer If possilbe, could you also have a look at:
UnboundLocalError
inemail._header_value_parser.parse_message_id
#134152AttributeError
inemail._header_value_parser.get_address
#134155TiA.
bitdancer commentedon May 18, 2025
This issue is in the old code, not the new API. If someone feels like fixing it I'll review, but I'm not going to fix this one myself. I'll look at the other issues presently, which are in the new API.
zangjiucheng commentedon May 26, 2025
Hello everyone,
I am surprised to discover that this is a legend code craft from 17 years ago. I am uncertain of the extent to which it could be beneficial to fix it, as we have already received a new API. However, I would appreciate it if you could take a look at it, @bitdancer.
Please let me know if you believe it is appropriate to merge this into the main branch :), thanks!
gh-134151 Fix `TypeError` in `email.utils.decode_params` when sorting…
pythongh-134151 Fix `TypeError` in `email.utils.decode_params` when s…
pythongh-134151 Fix `TypeError` in `email.utils.decode_params` when s…
TypeError
inemail.utils.decode_params
when sorting RFC 2231 continuations (GH-134687) #135247TypeError
inemail.utils.decode_params
when sorting RFC 2231 continuations (GH-134687) #135248[3.13] gh-134151 Fix `TypeError` in `email.utils.decode_params` when …
[3.14] gh-134151 Fix `TypeError` in `email.utils.decode_params` when …
bitdancer commentedon Jun 8, 2025
Thanks @zangjiucheng for the fix, and @picnixz for the additional review and merge.
pythongh-134151 Fix `TypeError` in `email.utils.decode_params` when s…
pythongh-134151 Fix `TypeError` in `email.utils.decode_params` when s…
pythongh-134151 Fix `TypeError` in `email.utils.decode_params` when s…