SV.TAINTED.FMTSTR

未经验证的输入 — 不受信任的数据被用作格式字符串。

漏洞与风险

请参阅 SV.TAINTED.ALLOC_SIZE

缓解与预防

请参阅 SV.TAINTED.ALLOC_SIZE

示例

复制
  #define TKS_MAXBUFFER 1024
  int check_tklines(char *host, char *user, int lifetime) {
    FILE *iconf, *iconf_tmp;
     //...
     if ((iconf = fopen(CPATH, "r")) && (iconf_tmp = fopen(TKSERV_IRCD_CONFIG_TMP, "w"))){
  
       char buffer[TKS_MAXBUFFER];
       while (fgets(buffer, TKS_MAXBUFFER, iconf)){
         if ((*buffer != 'K') || (!strstr(buffer, "tkserv"))){
            fprintf(iconf_tmp, buffer);
        }
        //...
 
       }
     }
     return 0;
   }

Klocwork 针对第 10 行生成问题报告,表明在第 8 行通过调用 fgets 所获得的、未经验证的字符串“buffer”可能在第 10 行通过调用 fprintf 而被用作格式字符串。