中級 › Segmentation fault(strcpyによるバッファオーバーフロー) › パターン1
Segmentation fault(strcpyによるバッファオーバーフロー)
コピー先のchar配列より長い文字列をstrcpyでコピーすると、確保した領域を超えて書き込みが起こります。
1 #include <stdio.h> 2 #include <string.h> 3 4 int main(void) { 5 char buf[8]; 6 strcpy(buf, __________________________); ^ 7 printf("%s\n", buf); 8 return 0; 9 }
Segmentation fault
空欄を埋めてコンパイル・実行を通す
buf[8]は8バイトしか確保されていません。それより長い文字列をstrcpyでコピーすると、確保した領域を超えて書き込みが起こり、隣接するメモリ(戻り先のアドレスなど)を破壊してクラッシュします。
次の問題