首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS KeychainItemWrapper中的内存泄漏

iOS KeychainItemWrapper中的内存泄漏
EN

Stack Overflow用户
提问于 2011-12-29 15:38:37
回答 3查看 2K关注 0票数 5

我使用苹果示例代码中的KeyChainItemWrapper来存储用于身份验证的用户密码,但是当我调用它来设置密码时:

代码语言:javascript
运行
复制
   [keychain setObject:passwordField.text forKey:(id)kSecValueData];

我的衬衫上到处都是内存。这个问题显然可以追溯到KeyChainItemWrapper.m中的第274行,即:

代码语言:javascript
运行
复制
if (SecItemCopyMatching((CFDictionaryRef)genericPasswordQuery, (CFTypeRef *)&attributes) == noErr)
{

我该如何解决这个问题,将来在使用Apple示例代码时,我应该更加小心吗?

注意:我可以发布更多的代码,但我已经使用Instruments将问题缩小到这一行,并且所有开发人员都可以很容易地获得完整的示例代码。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-29 15:57:45

看一下KeyChainItemWrapper的代码,我同意这一行是内存泄漏。他们错过了writeToKeychain末尾的[attributes release]。有关如何正确释放通过引用返回的对象的示例,请参阅此文件中对SecItemCopyMatching()的所有其他调用。

我会用“这很好,但是...”链接以注明错误。

票数 5
EN

Stack Overflow用户

发布于 2014-04-29 00:53:44

静态分析正在报告KeyChainItemWrapper.m的方法resetKeychainItem的第191行中的on对象的潜在泄漏。令人惊讶的是,它没有报告上面提到的区域中的潜在泄漏,尽管为了正确起见,我确实添加了对象的释放。

以下是报告泄漏的代码:

代码语言:javascript
运行
复制
- (void)resetKeychainItem
{
    ...
    // Default attributes for keychain item.
    [keychainItemData setObject:@"" forKey:(id)kSecAttrAccount]; // <-- Potential leak of an object
    [keychainItemData setObject:@"" forKey:(id)kSecAttrLabel];
    [keychainItemData setObject:@"" forKey:(id)kSecAttrDescription];

    // Default data for keychain item.
    [keychainItemData setObject:@"" forKey:(id)kSecValueData];
}

此问题在空字符串@"“上报告。我尝试了各种代码实现,试图“修复”这个问题,但似乎都不起作用。

这是假阳性吗?

更新:在发布后,我意识到我可以双击警告来跟踪错误。

此警告应归因于其上方用于分配字典的行:

代码语言:javascript
运行
复制
if (!keychainItemData)
{
    self.keychainItemData = [[NSMutableDictionary alloc] init];
}

我将代码更改为以下代码:

代码语言:javascript
运行
复制
if (!keychainItemData)
{
    self.keychainItemData = [[[NSMutableDictionary alloc] init] autorelease];
}

分析器警告不再存在。

票数 3
EN

Stack Overflow用户

发布于 2012-12-24 11:26:13

我在- (void) resetKeychainItem中发现了另一个漏洞。

它应该是

self.pKeychainItemData = [[[NSMutableDictionary alloc] init] autorelease];

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8665165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档