SV.TAINTED.FMTSTR
未经验证的输入 — 不受信任的数据被用作格式字符串。
漏洞与风险
缓解与预防
示例
复制
#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 而被用作格式字符串。