6

ファイル操作関数で 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");

どんな助けでも大歓迎です。

4

3 に答える 3

4

Error:TAINTED_STRING(Coverity が知る限り) 動作の一部が外部入力の影響を受けており、外部入力が実行に影響を与える前に「安全性」が検査されていないことを警告しています。

この特定の例では、LOG_FILE の値が "/log/test%d.log" であり、 で とともに使用されているため、Coverity が間違っているように見えます。これはintsnprintfの内容char fn[100]が常に適切に定義されていることを意味します。

そのため、今後の実行で無視されるように、エラーを問題ではないものとしてマークすることが合理的な方法です。

于 2014-09-11T10:11:24.677 に答える