質問

まCoverityバグのためのこのコード:

snprintf( tempStr, size, testStrings[testID], A2DtoV(testResults[testID].value),
A2DtoV(testResults[testID].min),A2DtoV(testResults[testID].max));

エラー"と言ってい

non_const_printf_format_string: "format string is not a string literal, 
potential security vulnerability if user controlled"

しtestStringsにconstがることもしなかった:

static const char *testStrings[] = {"1", ... etc};

そのアイデアとしてどのこのエラーは本当でしょうか。

役に立ちましたか?

解決

コードです。

の課題である場合には通過する文字列はユーザー管理としてのprintf書式文字列、セキュリティバグるのです。

例えば、 printf(userName);

がユーザ名は、ユーザーは、ユーザーがパス"%s"がお得にご機能へのアクセスデータランダムにアドレスはスタックするおそれがあるサードパーティサービスです。printfいポップ追加のパラメーターのスタック、スタックにしました。サービス妨害攻撃のようにこの場合、情報を公開することができるprintfダンプ出値をスタックをいただいてる方法はprintfスタイルの機能変更に戻りアドレス、スタックです。

から文字列はユーザーコントロールでは安全に無視するこのメッセージ。代表的な固定が置き換えるprintf例ったと printf("%s", userName);, うに表示されない立場なので定数文字列が含まれ形式の文字列です。

Wikipediaにはよりフォーマット文字列の脆弱性はこちら http://en.wikipedia.org/wiki/Format_string_vulnerabilities

他のヒント

アイデアは、 testStrings [testID] の値を何らかの方法で変更して、追加の書式指定子を含めることができるということです。

snprintf()はパラメーターの数がフォーマット指定子の数と一致するかどうかをチェックする可能性がないため、次のフォーマット指定子の値として使用するためにスタックから次のアドレスを取得し、奇妙なことが起こりますその後。

フォーマット文字列攻撃として知られています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top