mirror of
https://github.com/espressif/tlsf.git
synced 2026-06-06 05:24:52 +00:00
Fix block_size_max handling in adjust_request_size
In the 64-bit build, an allocation of request in the range ]block_size_max-ALIGN_SIZE,block_size_max[ could cause an out-of-bounds access to sl_bitmap.
This commit is contained in:
@@ -492,10 +492,15 @@ static void* align_ptr(const void* ptr, size_t align)
|
||||
static size_t adjust_request_size(size_t size, size_t align)
|
||||
{
|
||||
size_t adjust = 0;
|
||||
if (size && size < block_size_max)
|
||||
if (size)
|
||||
{
|
||||
const size_t aligned = align_up(size, align);
|
||||
adjust = tlsf_max(aligned, block_size_min);
|
||||
|
||||
/* aligned sized must not exceed block_size_max or we'll go out of bounds on sl_bitmap */
|
||||
if (aligned < block_size_max)
|
||||
{
|
||||
adjust = tlsf_max(aligned, block_size_min);
|
||||
}
|
||||
}
|
||||
return adjust;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user