-
-
Notifications
You must be signed in to change notification settings - Fork 32.1k
Out-of-bounds read in integrated mimalloc (fixed upstream) #134070
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
Labels
3.13
bugs and security fixes
3.14
bugs and security fixes
3.15
new features, bugs and security fixes
interpreter-core
(Objects, Python, Grammar, and Parser dirs)
type-bug
An unexpected behavior, bug, or error
Comments
cc @colesbury |
vedant713
added a commit
to vedant713/cpython
that referenced
this issue
May 17, 2025
vedant713
added a commit
to vedant713/cpython
that referenced
this issue
May 17, 2025
vedant713
added a commit
to vedant713/mimalloc
that referenced
this issue
May 17, 2025
This patch ensures that both mi_ctz_generic32 and mi_clz_generic32 perform safe indexing into the de Bruijn lookup tables by masking the computed index with `& 31`. On platforms where unsigned long is 64-bit, the result of the de Bruijn multiplication and shift could exceed the valid index range (0–31), leading to an out-of-bounds read. This change applies a bitwise AND mask to the final index: - `mi_ctz_generic32`: debruijn[(((x & -(int32_t)x) * 0x077CB531U) >> 27) & 31] - `mi_clz_generic32`: debruijn[((x * 0x07C4ACDDU) >> 27) & 31] This matches the fix applied in python/cpython#134070 to its integrated mimalloc copy. Fixes: python/cpython#134070
vedant713
added a commit
to vedant713/cpython
that referenced
this issue
May 17, 2025
vedant713
added a commit
to vedant713/cpython
that referenced
this issue
May 17, 2025
vedant713
added a commit
to vedant713/cpython
that referenced
this issue
May 17, 2025
vedant713
added a commit
to vedant713/cpython
that referenced
this issue
May 17, 2025
vedant713
added a commit
to vedant713/cpython
that referenced
this issue
May 17, 2025
vedant713
added a commit
to vedant713/cpython
that referenced
this issue
May 17, 2025
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
3.13
bugs and security fixes
3.14
bugs and security fixes
3.15
new features, bugs and security fixes
interpreter-core
(Objects, Python, Grammar, and Parser dirs)
type-bug
An unexpected behavior, bug, or error
Uh oh!
There was an error while loading. Please reload this page.
Bug report
Bug description:
The integrated mimalloc has out-of-bounds bug in the generic implementation of ctz/clz:
cpython/Include/internal/mimalloc/mimalloc/internal.h
Lines 847 to 870 in 6a22963
On platforms with 64-bit
UL
, the multiplication in index calculation can grow much larger than arraydebruijn[]
.It has been fixed in this upstream commit:
microsoft/mimalloc@ed31847
CPython versions tested on:
3.14, CPython main branch, 3.13, 3.15
Operating systems tested on:
Linux
Linked PRs
The text was updated successfully, but these errors were encountered: