Fix OverflowError with 32-bit (signed) time_t#4873
Merged
asvetlov merged 2 commits intoaio-libs:masterfrom Oct 16, 2020
mgorny:max-time
Merged
Fix OverflowError with 32-bit (signed) time_t#4873asvetlov merged 2 commits intoaio-libs:masterfrom mgorny:max-time
asvetlov merged 2 commits intoaio-libs:masterfrom
mgorny:max-time
Conversation
Fix the package to work on 32-bit platforms (i386, arm) that use 32-bit signed time_t. This means changing TestCookieJarSafe.test_expires() to use an earlier arbitrary date, and adjusting CookieJar to use MAX_TIME that fits in time_t. For the latter purpose, we try to convert datetime.max into timestamp and if it fails, we make date from a timestamp matching max unsigned int32. This is far from perfect but apparently there's no trivial way of getting max time_t value from inside Python, and it should cover all the common platforms. Fixes #4515
Codecov Report
@@ Coverage Diff @@
## master #4873 +/- ##
==========================================
+ Coverage 97.58% 97.59% +0.01%
==========================================
Files 43 43
Lines 8932 8938 +6
Branches 1406 1406
==========================================
+ Hits 8716 8723 +7
Misses 96 96
+ Partials 120 119 -1
Continue to review full report at Codecov.
|
asvetlov
approved these changes
Oct 16, 2020
Member
|
Thanks! |
Contributor
💔 Backport was not successfulThe PR was attempted backported to the following branches:
|
asvetlov
added a commit
that referenced
this pull request
Oct 16, 2020
Fix the package to work on 32-bit platforms (i386, arm) that use 32-bit signed time_t. This means changing TestCookieJarSafe.test_expires() to use an earlier arbitrary date, and adjusting CookieJar to use MAX_TIME that fits in time_t. For the latter purpose, we try to convert datetime.max into timestamp and if it fails, we make date from a timestamp matching max unsigned int32. This is far from perfect but apparently there's no trivial way of getting max time_t value from inside Python, and it should cover all the common platforms. Fixes #4515 Co-authored-by: Andrew Svetlov <[email protected]>
asvetlov
added a commit
that referenced
this pull request
Oct 16, 2020
Fix the package to work on 32-bit platforms (i386, arm) that use 32-bit signed time_t. This means changing TestCookieJarSafe.test_expires() to use an earlier arbitrary date, and adjusting CookieJar to use MAX_TIME that fits in time_t. For the latter purpose, we try to convert datetime.max into timestamp and if it fails, we make date from a timestamp matching max unsigned int32. This is far from perfect but apparently there's no trivial way of getting max time_t value from inside Python, and it should cover all the common platforms. Fixes #4515 Co-authored-by: Andrew Svetlov <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix the package to work on 32-bit platforms (i386, arm) that use 32-bit
signed time_t. This means changing TestCookieJarSafe.test_expires() to
use an earlier arbitrary date, and adjusting CookieJar to use MAX_TIME
that fits in time_t.
For the latter purpose, we try to convert datetime.max into timestamp
and if it fails, we make date from a timestamp matching max unsigned
int32. This is far from perfect but apparently there's no trivial way
of getting max time_t value from inside Python, and it should cover all
the common platforms.
Fixes #4515
What do these changes do?
Are there changes in behavior for the user?
Related issue number
Checklist
CONTRIBUTORS.txtCHANGESfolder<issue_id>.<type>for example (588.bugfix)issue_idchange it to the pr id after creating the pr.feature: Signifying a new feature..bugfix: Signifying a bug fix..doc: Signifying a documentation improvement..removal: Signifying a deprecation or removal of public API..misc: A ticket has been closed, but it is not of interest to users.