2022-10-28 20:07:31 -07:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include "mimalloc.h"
|
|
|
|
|
|
|
|
#ifdef USE_STD_MALLOC
|
|
|
|
# define mi(x) x
|
|
|
|
#else
|
|
|
|
# define mi(x) mi_##x
|
|
|
|
#endif
|
|
|
|
|
|
|
|
int main(int argc, char** argv) {
|
|
|
|
int* p = mi(malloc)(3*sizeof(int));
|
|
|
|
int* q = mi(malloc)(sizeof(int));
|
2022-10-29 11:43:09 -07:00
|
|
|
|
|
|
|
int* r = mi_malloc_aligned(8,16);
|
|
|
|
mi_free(r);
|
|
|
|
|
2022-10-28 20:07:31 -07:00
|
|
|
// undefined access
|
|
|
|
// printf("undefined: %d\n", *q);
|
|
|
|
|
|
|
|
*q = 42;
|
|
|
|
|
|
|
|
// buffer overflow
|
|
|
|
// q[1] = 43;
|
|
|
|
|
|
|
|
mi(free)(q);
|
|
|
|
|
|
|
|
// double free
|
2022-10-29 11:43:09 -07:00
|
|
|
// mi(free)(q);
|
2022-10-28 20:07:31 -07:00
|
|
|
|
|
|
|
// use after free
|
|
|
|
printf("use-after-free: %d\n", *q);
|
|
|
|
|
|
|
|
// leak p
|
|
|
|
// mi_free(p)
|
|
|
|
return 0;
|
|
|
|
}
|