问题描述
我正在从appscan获取以下代码集的缓冲区溢出情况。 我不确定其中有什么问题。 如果有人提出解决方案,那就太好了。通用代码适用于所有平台。
int main()
{
char* src = NULL;
char* chenv = getenv("HOME");
if (chenv == NULL || strlen(chenv) == 0)
return -1;
else
{
int len = strlen(chenv);
src = new char[len+1];
strncpy(src,chenv,len); // AppScan throws buffer overflow
src[len+1]='\0';
}
FILE* fp;
char content[4096];
int len = 0;
fp = fopen("filename.txt","r");
if(fp)
{
while( (len = fread(content,sizeof(char),sizeof(content),fp))> 0) // AppScan throws buffer overflow on content
{
docopy(content,len);// External funtion call.
}
}
return 0;
}
解决方法
我尝试使用strdup()代替了strncpy,问题得以解决。但是恐惧仍然存在问题。