[issue41999] imaplib Time2Internaldate crashing with time.struct_time supplied from datetime.timetuple()

sajicek report at bugs.python.org
Sat Oct 10 10:40:53 EDT 2020


New submission from sajicek <sajicek at gmail.com>:

Hello
first of all, I couldn't find any issue related to this, so sorry if it has been solved before.

There seems to be an issue with IMAPLIB in all versions I've checked, when using the Time2Internaldate function with time.struct_time created by datetime.timetuple() extracted from an EmailMessage object (using the email.utils.parsedate_to_datetime function), and even when created with datetime.now() the function crashes the app with
"TypeError: unsupported type for timedelta seconds component: NoneType"
on line 1530 in current master on GH. (delta = timedelta(seconds=gmtoff))

Crash happens because the "date_time.tm_gmtoff" from which the gmtoff variable is constructed, seems to default to None in all instances of time.struct_time object created by datetime.timetuple(), which still passes the try, except clausule on 1520, because it's not an AttributeError. The time.localtime() metioned in the docs asigns the correct value into tm_gmtoff, but the datetime.timetuple() does not.


Possible solutions I've found:
1) inside Time2Internaldate: surround the delta with try and except - in except make the delta = 0
2) inside Time2Internaldate: check the gmtoff for None and if yes, then change it to 0
3) change the default of tm_gmtoff in timetuple from None to 0 (or to a current timezone offset)

or just say in the docs, that time.struct_time created this way (using the datetime.timetuple()) is unsupported

PS: when writing this issue, I've started thinking this might be a datetime lib issue too

----------
components: Library (Lib)
messages: 378409
nosy: sajicek
priority: normal
severity: normal
status: open
title: imaplib Time2Internaldate crashing with time.struct_time supplied from datetime.timetuple()
type: behavior
versions: Python 3.10, Python 3.5, Python 3.6, Python 3.7, Python 3.8, Python 3.9

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue41999>
_______________________________________


More information about the Python-bugs-list mailing list