gpt4 book ai didi

c - C中的污染字符串

转载 作者:太空狗 更新时间:2023-10-29 14:57:26 24 4
gpt4 key购买 nike

我在我的文件操作功能中运行 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");

如有任何帮助,我们将不胜感激。

最佳答案

尝试以下操作:

char* id_str = getenv("ID");
if (id_str) {
id_str = strdup(id_str);
id = atoi(id_str);
free( id_str );
}

传递给 fopen 的 fn 字符串被环境变量污染了。使用 strdup 可能起到“ sanitizer ”的作用。

关于c - C中的污染字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21703826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com