ナロー文字列またはワイド文字列の不適切な使用
ワイド (ナロー) 文字列関数に渡されるナロー (ワイド) 文字列
説明
この欠陥は、ナロー文字列をワイド文字列関数に渡したり、ワイド文字列をナロー文字列関数に渡したりした場合に発生します。
ナロー文字列またはワイド文字列の不適切な使用は、ナロー文字列とワイド文字列が同じサイズになるオペレーティング システムでは欠陥を報告しません。
リスク
ワイド文字列関数にナロー文字列 (またはその逆) を使用すると、予期しない動作または未定義の動作になる可能性があります。
ワイド文字列をナロー文字列関数に渡す場合、以下の問題が発生する可能性があります。
データの切り捨て。文字列に null バイトが含まれている場合、
strncpy()を使用するコピー操作が早期に終了する可能性があります。不適切な文字列長。
strlen()は最初の null バイトまでの文字列の文字数を返します。ワイド文字列には、その最初の null バイトの後ろに追加文字が含まれている場合があります。
ナロー文字列をワイド文字列関数に渡す場合、以下の問題が発生する可能性があります。
バッファー オーバーフロー。
wcsncpy()を使用するコピー操作で、格納先文字列に、コピーの結果を格納するためのメモリが十分にない場合があります。
修正方法
ナロー文字列関数にナロー文字列を使用します。ワイド文字列関数にワイド文字列を使用します。
例
結果情報
| グループ: プログラミング |
| 言語: C | C++ |
| 既定値: オフ |
コマンド ライン構文: NARROW_WIDE_STR_MISUSE |
| 影響度: High |
バージョン履歴
R2018b で導入