古い C++ コードで静的解析作業を行っていますが、私の C++ は最強ではありません。私はこのコードを持っています:
void NIDP_clDPLogger::log(TCHAR *logString)
{
TCHAR temp_logString[1024] = {0};
_tcsncpy(temp_logString,logString,1024);
temp_logString[1023] = NULL;
...
ここで、静的分析ツールは、 logString (関数に渡されるパラメーター) のインデックスが 1024 よりも短い可能性があると不平を言っています (サイズはさまざまです。1024 が最大サイズだと思います)。したがって、私の修正は、次のようにlogStringのサイズを確認して使用することだと思います。
void NIDP_clDPLogger::log(TCHAR *logString)
{
size_t tempSize = sizeof(logString);
TCHAR temp_logString[tempSize] = {0};
_tcsncpy(temp_logString,logString,tempSize);
temp_logString[tempSize-1] = NULL;
私はちょうど疑問に思っています、これはうまくいくでしょうか?誰でも欠陥/問題を見ることができますか? このプロジェクトのビルドとテストは少し難しいので、基本的には、すべてを実行する前にサニティ チェックを探しています。または、私がそれを行うためのより良い方法はありますか? 以前にハードコードされた int があったため、size_t 値を _tcsncpy に渡すことはできますか?
助けてくれてありがとう。