我想避免以下程序中的缓冲区溢出漏洞,
int main (int argc, char *argv[ ]) {
int valid=FALSE;
char str1[8];
char str2[8];
next_tag(str1);
gets(str2);
if (strncmp(str1,str2,8)==0)
valid=TRUE;
printf("buffer: str1(%s),str2(%s),valid(%d) \n", str1, str2, valid);
}
为了修复漏洞,这是对它的正确更正吗?
int main (int argc, char *argv[ ]) {
int valid=FALSE;
char str1[8];
char str2[8];
next_tag(str1);
fgets(str2); /* HERE IS THE CHANGE! */
if (strncmp(str1,str2,8)==0)
valid=TRUE;
printf("buffer: str1(%s),str2(%s),valid(%d) \n", str1, str2, valid);
}