mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-03-10 13:30:11 +00:00
BUG/MEDIUM: pools: Fix the usage of mmap()) with DEBUG_UAF.
When mapping memory with mmap(), we should use a fd of -1, not 0. 0 may work on linux, but it doesn't work on FreeBSD, and probably other OSes. It would be nice to backport this to 1.8 to help debugging there.
This commit is contained in:
parent
4e7cc3381b
commit
62975a7740
@ -394,12 +394,13 @@ static inline void pool_free_area(void *area, size_t __maybe_unused size)
|
||||
* some padding is added, the area's start address is copied at the end of the
|
||||
* padding to help detect underflows.
|
||||
*/
|
||||
#include <errno.h>
|
||||
static inline void *pool_alloc_area(size_t size)
|
||||
{
|
||||
size_t pad = (4096 - size) & 0xFF0;
|
||||
void *ret;
|
||||
|
||||
ret = mmap(NULL, (size + 4095) & -4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0);
|
||||
ret = mmap(NULL, (size + 4095) & -4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
|
||||
if (ret == MAP_FAILED)
|
||||
return NULL;
|
||||
if (pad >= sizeof(void *))
|
||||
|
Loading…
Reference in New Issue
Block a user