C and C++


MISC.FMTTYPE : 不正なフォーマット文字列

要旨

printfに似た関数へ渡された引数が、フォーマット文字列(書式文字列)型と一致しません。引数の数が正しくない若しくは引数の型に誤りがあります。

プロパティ

クラス名 Format String Type Error
日本語クラス名 不正なフォーマット文字列
クラス分類 セキュリティ (security)
ニーモニック MISC.FMTTYPE
カテゴリー
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
TS17961 TS17961:5.44-invfmtstr 5.44. Using invalid format strings
CERT-C CERT-C:FIO47-C Use valid format strings
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで有効になっています。チェックを無効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += discard class="Format String Type Error"

#include <stdio.h>

void misc_fmttype(){
    printf("%i", 5);                          /* ok: correct number and type of arguments */

    printf("%i", 5.5);       /* "Format String Type Error" warning issued here:
                              * format string specifies an integer but argument is a float. */

    printf("%i", "5");       /* "Format String Type Error" warning issued here:
                              * format string specifies an integer but argument is a string. */

    printf("%i%i", 5);       /* "Format String Type Error" warning issued here:
                              * format string specifies two arguments but there is only one. */

    printf("%i%i", 5, 5, 5); /* "Format String Type Error" warning issued here:
                              * format string specifies two arguments but there are three. */
}

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

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