簡體   English   中英

C++ 中 fread 和 strncpy 中的緩沖區溢出

[英]Buffer overflow in fread and strncpy in C++

我正在從 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 並解決了問題。 但是fread仍然有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM