使用SecItemCopyMatching和Veracode进行错误处理

时间:2018-11-15 19:28:59

标签: ios swift

我使用Veracode扫描我的应用程序,并遇到有关 未经检查的错误条件。这是我的代码:

    let status = withUnsafeMutablePointer(to: &queryResult) {
        SecItemCopyMatching(query as CFDictionary, UnsafeMutablePointer($0))
    }

    // Check the return status and throw an error if appropriate.
    guard status != errSecItemNotFound else {
        throw KeychainError.noKeychain
    }
    guard status == noErr else {
        throw KeychainError.unhandledError(status: status)
    }

错误在这一行:SecItemCopyMatching(以CFDictionary查询,UnsafeMutablePointer($ 0))

  

当应用程序无法正确处理在处理过程中发生的错误时,就会发生错误处理问题。如果某个功能未能生成正确的返回/状态代码,或者产品未处理该功能可能生成的所有可能的返回/状态代码,则可能会导致安全问题。同样,未能捕获函数引发的异常可能会导致程序崩溃或行为异常。

1 个答案:

答案 0 :(得分:0)

根据the docs,闭包中的参数已经是UnsafeMutablePointer类型。因此,基本上,您要将UnsafeMutablePointer<UnsafeMutablePointer>传递到SecItemCopyMatching,在这里(如果您想坚持使用UnsafeMutablePointer,则应该传递UnsafeMutablePointer<CFTypeRef>。因此,尝试

SecItemCopyMatching(query as CFDictionary, $0)