このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ナロー文字列またはワイド文字列の不適切な使用
ワイド (ナロー) 文字列関数に渡されるナロー (ワイド) 文字列
説明
この欠陥は、ナロー文字列をワイド文字列関数に渡したり、ワイド文字列をナロー文字列関数に渡したりした場合に発生します。
ナロー文字列またはワイド文字列の不適切な使用は、ナロー文字列とワイド文字列が同じサイズになるオペレーティング システムでは欠陥を報告しません。
リスク
ワイド文字列関数にナロー文字列 (またはその逆) を使用すると、予期しない動作または未定義の動作になる可能性があります。
ワイド文字列をナロー文字列関数に渡す場合、以下の問題が発生する可能性があります。
データの切り捨て。文字列に null バイトが含まれている場合、
strncpy()を使用するコピー操作が早期に終了する可能性があります。不適切な文字列長。
strlen()は最初の null バイトまでの文字列の文字数を返します。ワイド文字列には、その最初の null バイトの後ろに追加文字が含まれている場合があります。
ナロー文字列をワイド文字列関数に渡す場合、以下の問題が発生する可能性があります。
バッファー オーバーフロー。
wcsncpy()を使用するコピー操作で、格納先文字列に、コピーの結果を格納するためのメモリが十分にない場合があります。
修正方法
ナロー文字列関数にナロー文字列を使用します。ワイド文字列関数にワイド文字列を使用します。
例
結果情報
| グループ: プログラミング |
| 言語: C | C++ |
| 既定値: オフ |
コマンド ライン構文: NARROW_WIDE_STR_MISUSE |
| 影響度: High |
バージョン履歴
R2018b で導入
参考
配列が範囲外にアクセス | 文字列操作で格納先バッファーがオーバーフローしています | 標準ライブラリ ルーチンの無効な使用 | 標準ライブラリ文字列ルーチンの無効な使用 | 範囲外にアクセスするポインター | 関数ポインターの信頼性の低いキャスト | キャストに割り当てられた誤ったオブジェクト サイズ | 欠陥の検出 (-checkers)
トピック
- Polyspace Access Web インターフェイスでの Bug Finder の結果の解釈 (Polyspace Access)
- Polyspace Access でのバグ修正または正当化による結果への対処 (Polyspace Access)