hardened_malloc/test/offset.c

46 lines
1.2 KiB
C
Raw Normal View History

2018-11-16 15:25:35 -05:00
#include <stdbool.h>
2018-08-26 03:15:13 -04:00
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
2018-10-19 16:17:38 -04:00
static unsigned size_classes[] = {
2018-08-26 03:15:13 -04:00
/* large */ 4 * 1024 * 1024,
/* 0 */ 0,
/* 16 */ 16, 32, 48, 64, 80, 96, 112, 128,
/* 32 */ 160, 192, 224, 256,
/* 64 */ 320, 384, 448, 512,
/* 128 */ 640, 768, 896, 1024,
/* 256 */ 1280, 1536, 1792, 2048,
/* 512 */ 2560, 3072, 3584, 4096,
/* 1024 */ 5120, 6144, 7168, 8192,
/* 2048 */ 10240, 12288, 14336, 16384
};
#define N_SIZE_CLASSES (sizeof(size_classes) / sizeof(size_classes[0]))
2018-10-19 16:17:38 -04:00
static const size_t canary_size = SLAB_CANARY ? sizeof(uint64_t) : 0;
2018-08-26 03:15:13 -04:00
int main(void) {
2018-10-19 16:17:38 -04:00
for (unsigned i = 2; i < N_SIZE_CLASSES; i++) {
size_classes[i] -= canary_size;
}
2018-08-26 03:15:13 -04:00
void *p[N_SIZE_CLASSES];
for (unsigned i = 0; i < N_SIZE_CLASSES; i++) {
unsigned size = size_classes[i];
p[i] = malloc(size);
if (!p) {
return 1;
}
void *q = malloc(size);
if (!q) {
return 1;
}
if (i != 0) {
2018-10-04 02:40:51 -04:00
printf("%zu to %zu: %zd\n", size_classes[i - 1], size, p[i] - p[i - 1]);
2018-08-26 03:15:13 -04:00
}
2018-08-26 04:51:38 -04:00
printf("%zu to %zu: %zd\n", size, size, q - p[i]);
2018-08-26 03:15:13 -04:00
}
return 0;
}