18eb8bab992e3998c33770b0cdb16059a8b918a06sewardj#include <inttypes.h> 2d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe#include <stdio.h> 3d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe#include <stdlib.h> 4d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippeint main() 5d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe{ 6d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe __attribute__((unused)) char *p = malloc (1); 7d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe char *b1 = malloc (128); 8d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe char *b2 = malloc (128); 98eb8bab992e3998c33770b0cdb16059a8b918a06sewardj fprintf (stderr, "b1 %#" PRIxPTR " b2 %#" PRIxPTR "\n", 108eb8bab992e3998c33770b0cdb16059a8b918a06sewardj (uintptr_t)b1, (uintptr_t)b2); 11d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe 12d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe // Try to land in b2 from b1, causing no error 13d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe // with the default redzone-size, but having 14d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe // an error with a bigger redzone-size. 15d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe // We need to choose a value which lands in b2 16d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe // on 32 bits and 64 bits. 17d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe b1[127 + 70] = 'a'; 18d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe return 0; 19d99c26a4bc18fd3b17c4626c9c1fbd1583388660philippe} 20