#include #include #ifndef VOLATILE #define VOLATILE #endif static int i; int main(int argc, char *argv[]) { VOLATILE int boundary_1 = 0; char a[4]; VOLATILE int boundary_2 = 0; for(i=0;i<200;i++) { a[i] = 'x' + boundary_1 + boundary_2; if (boundary_1 != 0) { printf ("boundary_1 overwritten!\n"); exit(1); } else if (boundary_2 != 0) { printf ("boundary_2 overwritten!\n"); exit(2); } else if (i > 15) { boundary_1 = 1; boundary_2 = 1; printf ("Cause SIGSEGV here: %s\n", (char *)boundary_2); } } return EXIT_SUCCESS; }