From d25579e4789b890d67fe8697f4d03879b51a1a75 Mon Sep 17 00:00:00 2001 From: Matt Rubin Date: Sun, 9 Sep 2018 19:50:36 -0400 Subject: [PATCH] Treat failure to delete a non-existent password as success Fixes https://github.com/signalapp/Signal-iOS/issues/3876 --- SignalServiceKit/src/Storage/KeychainStorage.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/SignalServiceKit/src/Storage/KeychainStorage.swift b/SignalServiceKit/src/Storage/KeychainStorage.swift index 12e76e4da..b19139b4c 100644 --- a/SignalServiceKit/src/Storage/KeychainStorage.swift +++ b/SignalServiceKit/src/Storage/KeychainStorage.swift @@ -94,6 +94,10 @@ public class SSKDefaultKeychainStorage: NSObject, SSKKeychainStorage { var error: NSError? let result = SAMKeychain.deletePassword(forService: service, account: key, error: &error) if let error = error { + // If deletion failed because the specified item could not be found in the keychain, consider it success. + if error.code == errSecItemNotFound { + return + } throw KeychainStorageError.failure(description: "\(logTag) error removing data: \(error)") } guard result else {