mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-07-02 17:54:38 +03:00
![]() 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 |
||
---|---|---|
.. | ||
mimalloc | ||
mimalloc-new-delete.h | ||
mimalloc-override.h | ||
mimalloc-stats.h | ||
mimalloc.h |