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

avoid integer overflow for cache-limit #620

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

Conversation

michaelolbrich
Copy link
Contributor

Without this, "mb * 1024 * 1024" overflows for mb >= 2048. The result is then cast into size_t, which is unsigned and usually a 64-bit integer. The end result is, that the cache is now basically unlimited.

Fix this by making mb a size_t as well to avoid the overflow.

daemon/main.cpp Outdated Show resolved Hide resolved
Without this, "mb * 1024 * 1024" overflows for mb >= 2048. The result is
then cast into size_t, which is unsigned and usually a 64-bit integer.
The end result is, that the cache is now basically unlimited.

Fix this by making sure that the multiplication operated on 64-bit
values.
Copy link
Contributor

@ossilator ossilator left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"operate_s_" in the commit message.
also, the statement isn't true on 32-bit systems.

hmm. so pedantically, this is all wrong anyway. it shouldn't be size_t, but off64_t or some such. but i suspect that the code is full of such bugs anyway, so whatever. "nobody" still builds on 32-bit machines anyway.

some error handling would be nice, though. but that's a separate thing.

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.

2 participants