Improper Memory Management (不適切なメモリ管理)¶
ルール ID¶
MI102
定義¶
ソフトウェアは、割り当てられたメモリを使用した後、適切にメモリを追跡して解放していません。これにより、徐々に空きメモリが消費されます。
サンプル¶
次のコードは、CWE の該当コード サンプルの 1 つです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
processMessage メソッドは、処理対象のメッセージを含む 2 次元文字配列を受け取ります。 2 次元文字配列の最初の文字配列にはメッセージの長さが含まれ、2 つ目の文字配列にはメッセージ本文が含まれています。getMessageLength メソッドは、最初の文字配列から長さを表す整数値を取得します。メッセージの長さが 0 より大きいことを検証した後、本体の文字配列ポインターは 2 次元文字配列の 2 つ目の文字配列の先頭を指しており、新しい本体文字配列のためにメモリが割り当てられます。このサンプルは、本体文字配列の長さが非常に大きく、過剰なメモリを消費し、システム リソースが枯渇する状況を発生させます。最大長のチェックを行って、2 つ目の文字配列の長さを制限することで、このような状況を避けられます。