【发布时间】:2014-03-09 08:32:00
【问题描述】:
我在文件操作函数中运行 Coverity 工具,出现以下错误。
正如您在下面看到的,在将有问题的变量传递给错误消息中显示的行号之前,我使用了 snprintf()。我想必须对字符串进行一些清理,作为 snprintf() 的一部分。但仍然显示警告。
Error:TAINTED_STRING (TAINTED string "fn" was passed to a tainted string sink content.) [coverity]
char fn[100]; int id = 0;
char* id_str = getenv("ID");
if (id_str) {
id = atoi(id_str);
}
memset(fn, '\0', sizeof(fn));
snprintf(fn, 100, LOG_FILE, id);
if(fn[100-1] != '\0') {
fn[100-1] = '\0';
}
log_fp = fopen (fn, "a");
任何帮助将不胜感激。
【问题讨论】:
-
LOG_FILE设置为什么? -
它的“/log/test%d.log”
-
LOG_FILE中没有%d。为什么要将id传递给snprintf()? -
对不起。我已经编辑了上面的回复。
-
没有行号。哪条线?