#define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #define STACK_SIZE 2*4096 int main() { unsigned char *end; /* Allocate stack */ unsigned char *stack = mmap(NULL, STACK_SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON | MAP_GROWSDOWN, 0, 0); printf("stack = %p\n", stack); end = stack + STACK_SIZE - 8; printf("end = %p\n", end); printf("write to *end\n"); *end = 0; printf("write to *stack\n"); *(stack) = 0; printf("write to *(stack-1)\n"); *(stack-1) = 0; }