C言語でbuffer overrun
お呼びでない関数を実行する。
overrun.c
#include <stdio.h> #include <stdlib.h> void goast(void) { printf("Boo!\n"); } void dummy(void) { char a[1] = {0}; a[9] = &goast; } int main(void) { dummy(); return 0; }
実行例
$ gcc overrun.c overrun.c: In function 'dummy': overrun.c:13: warning: assignment makes integer from pointer without a cast $ ./a.out Boo! Segmentation fault