|
Lines 15-20
Link Here
|
| 15 |
#include "libsandbox.h" |
15 |
#include "libsandbox.h" |
| 16 |
#include "sbutil.h" |
16 |
#include "sbutil.h" |
| 17 |
|
17 |
|
|
|
18 |
/* Well screw me sideways, someone decided to override mmap() #290249 */ |
| 19 |
static void *(*_sb_mmap)(void *addr, size_t length, int prot, int flags, int fd, off_t offset); |
| 20 |
static void *sb_mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset) |
| 21 |
{ |
| 22 |
if (!_sb_mmap) |
| 23 |
_sb_mmap = get_dlsym("mmap", NULL); |
| 24 |
return _sb_mmap(addr, length, prot, flags, fd, offset); |
| 25 |
} |
| 26 |
#define mmap sb_mmap |
| 27 |
static int (*_sb_munmap)(void *addr, size_t length); |
| 28 |
static int sb_munmap(void *addr, size_t length) |
| 29 |
{ |
| 30 |
if (!_sb_munmap) |
| 31 |
_sb_munmap = get_dlsym("munmap", NULL); |
| 32 |
return _sb_munmap(addr, length); |
| 33 |
} |
| 34 |
#define munmap sb_munmap |
| 35 |
|
| 18 |
#define SB_MALLOC_TO_MMAP(ptr) ((void*)(((size_t*)ptr) - 1)) |
36 |
#define SB_MALLOC_TO_MMAP(ptr) ((void*)(((size_t*)ptr) - 1)) |
| 19 |
#define SB_MMAP_TO_MALLOC(ptr) ((void*)(((size_t*)ptr) + 1)) |
37 |
#define SB_MMAP_TO_MALLOC(ptr) ((void*)(((size_t*)ptr) + 1)) |
| 20 |
#define SB_MALLOC_TO_SIZE(ptr) (*((size_t*)SB_MALLOC_TO_MMAP(ptr))) |
38 |
#define SB_MALLOC_TO_SIZE(ptr) (*((size_t*)SB_MALLOC_TO_MMAP(ptr))) |