Issue 35985: Folding tries to slice from 0 to float("+inf") when maxlength is 0 (original) (raw)

Created on 2019-02-13 12:08 by Lukas J, last changed 2022-04-11 14:59 by admin. This issue is now closed.

Messages (8)
msg335424 - (view) Author: Lukas J (Lukas J) Date: 2019-02-13 12:08
When converting an email.message.Message with the policy set to email.policy.EmailPolicy with all default settings, I eventually end up with this exception: File "/usr/lib/python3.7/email/_header_value_parser.py", line 2727, in _fold_as_ew first_part = to_encode[:text_space] TypeError: slice indices must be integers or None or have an __index__ method Which is caused because text_space is a float of value +inf. This is set on line 2594 of the same file: maxlen = policy.max_line_length or float("+inf") For some reason policy.max_line_length is set to zero, even though the default should be 78 after a glance into the source. So there's maybe even two issues: 1.) The fallback for maxlen shouldn't be float("+inf"), as that is not an integer and thus can't be sliced by. I think a big integer would suffice instead, for example 100000000 2.) policy.max_line_length seems to lose it's value in the default settings somewhere along the way if it isn't explicitly set. Current workaround: Set max_line_length of the policy to a value (78 is default)
msg335425 - (view) Author: Karthikeyan Singaravelan (xtreak) * (Python committer) Date: 2019-02-13 12:15
This seems to be same as ?
msg335426 - (view) Author: Lukas J (Lukas J) Date: 2019-02-13 12:22
Indeed it is. Sorry I didn't find it before. So it seems that changing float("+inf") to sys.maxsize would solve the problem? I've tried it in an interactive shell: >>> a = "asd"; import sys >>> a[:sys.maxsize] 'asd'
msg335430 - (view) Author: Stéphane Wirtel (matrixise) * (Python committer) Date: 2019-02-13 12:28
Could you share your example? Thank you
msg335431 - (view) Author: Lukas J (Lukas J) Date: 2019-02-13 12:37
Minimal example: import email.policy import email.mime.text responsehtml = "somehtmlbody" msg = email.mime.text.MIMEText(responsehtml, "html", policy=email.policy.EmailPolicy()) msg["to"] = "test@example.com" msg["cc"] = "äöü <foo@bar.com>" msg["From"] = "foo@bar.com" msg["Subject"] = "test" msg.as_string()
msg335432 - (view) Author: Karthikeyan Singaravelan (xtreak) * (Python committer) Date: 2019-02-13 12:42
Thanks for the confirmation. I would propose closing this as a duplicate. The PR on the other issue might fix your issue and is just waiting on a NEWS entry.
msg335433 - (view) Author: Lukas J (Lukas J) Date: 2019-02-13 12:45
Ok thank you!
msg335435 - (view) Author: Stéphane Wirtel (matrixise) * (Python committer) Date: 2019-02-13 12:57
Just add the link to the other issue: https://bugs.python.org/issue33524
History
Date User Action Args
2022-04-11 14:59:11 admin set github: 80166
2019-02-13 13:06:27 xtreak set superseder: non-ascii characters in headers causes TypeError on email.policy.Policy.fold
2019-02-13 12:57:50 matrixise set messages: +
2019-02-13 12:45:45 Lukas J set status: open -> closedresolution: duplicatemessages: + stage: resolved
2019-02-13 12:42:58 xtreak set messages: +
2019-02-13 12:37:00 Lukas J set messages: +
2019-02-13 12:28:04 matrixise set nosy: + matrixisemessages: +
2019-02-13 12:22:40 Lukas J set messages: +
2019-02-13 12:15:53 xtreak set nosy: + xtreakmessages: +
2019-02-13 12:08:03 Lukas J create