いくつかのテキストを読んで、Cの配列のサイズを超えて書き込もうとして遊んでいました。つまり、バッファオーバーフローです。このテキストは、配列の長さが5のときに書き込もうとするとarray[5]
、セグメンテーション違反が発生することを示していますが、以下のコードを使用すると、セグメンテーション違反が発生しないようです。コードは実際に実行されます。
#include <stdio.h>
#include <string.h>
int main ()
{
int i;
int array[5] = {1, 2, 3, 4, 5};
for (i = 0; i <= 255; i++)
{
array[i] = 10;
}
int len = sizeof(array) / sizeof(int);
printf("%d\n", len);
printf("%d\n", array[254]);
}
最後のステートメントを実行すると、a10
が出力されます。これが脆弱性なのか、それとも私が見逃しているものがあるのか疑問に思っています。MacBookProでiterm2のコードを実行しています。