Skip to content
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

Fix a Y2038 bug by replacing Int32x32To64 with regular multiplication #1901

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

CookiePLMonster
Copy link

This issue has also been reported in "upstream" SQLite, currently awaiting approval: https://sqlite.org/forum/forumpost/51e004d479

Int32x32To64 macro internally truncates the arguments to int32, while time_t is 64-bit on most/all modern platforms. Therefore, usage of this macro creates a Year 2038 bug.

I detailed this issue a while ago in a writeup, and spotted the same issue in this repository when updating the list of affected repositories:
https://cookieplmonster.github.io/2022/02/17/year-2038-problem/

Int32x32To64 macro internally truncates the arguments to int32,
while time_t is 64-bit on most/all modern platforms.
Therefore, usage of this macro creates a Year 2038 bug.
@CookiePLMonster
Copy link
Author

"Upstream" SQLite fixed this bug in sqlite/sqlite@8d6e3f5. They are missing a LL suffix but with a 64-bit time_t this doesn't matter anyway.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant