2013-03-02 12 views

回答

6

它旨在确保由Keychain Services API中的函数分配的内存由调用方以正确的方式释放。例如,SecKeychainFindGenericPassword通过输出参数返回密码数据。调用者需要通过SecKeychainItemFreeContent而不是像free这样的替代API来释放此数据。未能使用正确的API可能会将敏感数据(例如密码)留在内存中。

如果您对更多细节感兴趣,可以在LLVM SVN repository中看到此检查器的实现。

+0

我在[静态分析器 - 问题 - 安全]下的BuildSettings中看到了这个,但是在它前面还有一个YES和No的选项。我很困惑它实际上是什么意思..例如,写有'KeyChain的滥用服务API“,并在它前面我有一个选项,是和否。这是否意味着如果我将它设置为否,它不会被滥用或什么。看起来很荒唐。任何帮助? – 2017-02-11 18:29:41

+1

该设置控制是否启用特定分析仪检查。 – bdash 2017-02-11 18:31:16

3

评论中the source code解释说:

// 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. 

它似乎并没有做任何事情比这更花哨。

相关问题