私は面接の準備をしていて、そこで働く友人からこのコードのセクションを渡され、セキュリティについて尋ねられる質問の 1 つに対する良い準備になると言っています。私は物事のこの側面についてあまり知りませんが、少し学びたいと思っています。
これはコードです:
#include <stdio.h>
#include <string.h>
#include <limits.h>
int main(int argc, char *argv[]){
FILE *inputFile;
char filename[128];
char strings[USHRT_MAX][40];
unsigned short c = 0;
strcpy(filename, argv[1]);
inputFile = fopen (filename, "r");
if (inputFile == NULL) {
perror("Error: ");
return(-1);
}
while (fscanf(inputFile, "%s", strings[c++] ) != EOF);
fclose(inputFile);
return(0);
}
バッファをオーバーフローできるという脆弱性があることは知っていますが、それは彼が私に言ったことですが、それ以上は行き詰まっています。このコードが脆弱である理由を誰か説明できますか?