以下のカバレッジエラーを修正します。ここでは2番目のパラメータサイズは sizeof(empID)-1またはsizeof(empID)を使用する必要がありますか?ヌル文字を削除するために1を引くべきですか? EX:C++でのCoverityの問題+ snprintfの使用
char empID[8] ;
snprintf(empID,sizeof(empID)-1, "S%05d", (char)pManager -> GetEmpID(groupID, levelID)) ;
コベリティ出力:
【非常に危険]危険な関数(SECURE_CODING)を呼び出します。 "sprintf"を使用すると、間違って実行されるとバッファオーバーフローが発生することがあります( )。 sprintf() は任意の長い文字列を仮定しているため、発信者は宛先の実際の領域をオーバーフローさせないように注意する必要があります。 代わりにsnprintf()を使用してください。 、または正確な精度指定子を修正してください。
なぜ[マニュアルページ(http://linux.die.net/man/3/snprintf)を読んでいませんか?それは非常に明確です。 –
Coverityレポートは、表示していないコード上にあります。あなたの質問にも適合していますか?「おそらく* is *である答えをsnprintf()にどうやって伝えるのですか?」 –