私は今日、バッファ オーバーフローについて学んでおり、脆弱なプログラムの例を数多く見つけました。私が興味を持っているのは、次のようにプログラムの引数を処理する理由があるかどうかです。
int main(int argc, char *argv[])
{
char argument_buffer[100];
strcpy(argument_buffer, argv[1]);
if(strcmp(argument_buffer, "testArg") == 0)
{
printf("Hello!\n");
}
// ...
}
単純に:
int main(int argc, char *argv[])
{
if(strcmp(argv[1], "testArg") == 0)
{
printf("Hello!\n");
}
}
私は短所などについて知っていることに注意してくださいstrcpy
。これは単なる例です。私の質問は、一時バッファを使用して argv からの引数を格納する本当の理由はありますか? 何もないと思いますが、実際には使用されていないのに、オーバーフローの例にあるのはなぜですか? 純粋な理論のせいかもしれません。