データ転送時の欠落しているバイトの並べ替え
ホストとネットワークのエンディアンが異なる
説明
この欠陥は、以下のタイミングでバイト順関数が使用されなかった場合に発生します。
ネットワーク ソケットにデータを送信する前。
ネットワーク ソケットからデータを受信した後。
リスク
リトル エンディアン バイト順 (最下位バイトが先) を実装しているシステム アーキテクチャもあれば、ビッグ エンディアン バイト順 (最上位バイトが先) を実装しているシステム アーキテクチャもあります。送信データのエンディアンが受信システムのエンディアンと一致しない場合、データ読み取り時に返される値は正しくありません。
修正方法
ソケットからデータを受信した後に、ntohl() などのバイト順関数を使用します。ソケットにデータを送信する前に、htonl() などのバイト順関数を使用します。
例
結果情報
| グループ: プログラミング |
| 言語: C | C++ |
| 既定値: オフ |
コマンド ライン構文: MISSING_BYTESWAP
|
| 影響度: Medium |
バージョン履歴
R2017b で導入