C and C++


MATH.RANGE.COSH.TOOLOW : 小さすぎる双曲線余弦関数の引数値

要旨

双曲線余弦関数ライブラリ実行時の引数の値が小さすぎるため、算術オーバーフローが発生します。

プロパティ

クラス名 cosh on Low Number
日本語クラス名 小さすぎる双曲線余弦関数の引数値
クラス分類 信頼性 (reliability)
ニーモニック MATH.RANGE.COSH.TOOLOW
カテゴリー
MisraC2023 MisraC2023:D.4.1 Run-time failures shall be minimized
  MisraC2023:D.4.11 The validity of values passed to library functions shall be checked
Misra2012 Misra2012:D.4.1 Run-time failures shall be minimized
  Misra2012:D.4.11 The validity of values passed to library functions shall be checked
Misra2004 Misra2004:20.3 The validity of values passed to library functions shall be checked
AUTOSARC++14 AUTOSARC++14:A0-4-4 Range, domain and pole errors shall be checked when using math functions.
CWE CWE:628 Function Call with Incorrectly Specified Arguments
  CWE:687 Function Call With Incorrectly Specified Argument Value
  CWE:688 Function Call With Incorrect Variable or Reference as Argument
CERT-C CERT-C:FLP32-C Prevent or detect domain and range errors in math functions
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで有効になっています。チェックを無効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += discard class="cosh on Low Number"

ワーニングを引き起こす関数

CodeSonar ships with library models that allow it to functions such as libm cosh() that compute a hyperbolic cosine. If one of these functions is called with a value less than -710.5 in the input parameter position, a warning will be issued.

If you have created a custom library model for some function f() in terms of one of these existing models, calls to f() will also be capable of triggering cosh on Low Number warnings.

#include <math.h>

double call_cosh(double ind){
    double a = cosh(-1);                                          /* ok */
    double b = cosh(-710.5);                                      /* ok */
    double c = cosh(-7.105f*100); /* 'cosh on Low Number' warning issued here:
                                   * because of floating point imprecision, -7.105f*100 < -710.5 */  
    double d = cosh(-711);        /* 'cosh on Low Number' warning issued here */
    double e = cosh(ind);         /* EVIDENCED ONLY: 'cosh on Low Number' warning issued here
                                   * if CodeSonar has evidence that a negative value is passed to call_cosh(). */
    return a+b+c+d+e;
}

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。