我正在准备面试,一位在那里工作的朋友给了我这部分代码,他说它很好地准备了一些我将被问到的关于安全性的问题。我对这方面的事情了解不多,希望能学到一点,所以我至少可以说一些我应该被问到的东西。
这是代码:
#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);
}
我知道它有一个漏洞与能够溢出缓冲区有关,因为这就是他告诉我的,但除此之外我被卡住了。有人可以解释为什么这段代码容易受到攻击吗?