Xcode 4.6 には、「キーチェーン サービス API の誤用」というラベルの付いたビルド設定がありますCLANG_ANALYZER_SECURITY_KEYCHAIN_API
。クイック ヘルプは役に立たない:
Keychain Services API の誤用をチェックします。
では、これがオンになっている場合、Clang Static Analyzer はどのような「誤用」を探すのでしょうか?
Xcode 4.6 には、「キーチェーン サービス API の誤用」というラベルの付いたビルド設定がありますCLANG_ANALYZER_SECURITY_KEYCHAIN_API
。クイック ヘルプは役に立たない:
Keychain Services API の誤用をチェックします。
では、これがオンになっている場合、Clang Static Analyzer はどのような「誤用」を探すのでしょうか?
これは、キーチェーン サービス API の関数によって割り当てられたメモリが、呼び出し元によって正しい方法で割り当て解除されるようにすることを目的としています。たとえばSecKeychainFindGenericPassword
、出力パラメータを介してパスワード データを返します。呼び出し元は、 のSecKeychainItemFreeContent
ような代替 API ではなく、このデータの割り当てを解除する必要がありますfree
。正しい API を使用しないと、機密データ (パスワードなど) がメモリに残る可能性があります。
詳細に興味がある場合は、 LLVM SVN リポジトリでこのチェッカーの実装を確認できます。
ソース コード内のコメントは、次のことを説明しています。
// This checker flags misuses of KeyChainAPI. In particular, the password data
// allocated/returned by SecKeychainItemCopyContent,
// SecKeychainFindGenericPassword, SecKeychainFindInternetPassword functions has
// to be freed using a call to SecKeychainItemFreeContent.
それ以上の派手なことはしていないようです。