X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/866f8763175ff60e4fa455b92b5eb660a12fe6c7..refs/heads/master:/OSX/libsecurity_keychain/lib/DLDBListCFPref.cpp diff --git a/OSX/libsecurity_keychain/lib/DLDBListCFPref.cpp b/OSX/libsecurity_keychain/lib/DLDBListCFPref.cpp index 3cd84cc4..14774788 100644 --- a/OSX/libsecurity_keychain/lib/DLDBListCFPref.cpp +++ b/OSX/libsecurity_keychain/lib/DLDBListCFPref.cpp @@ -415,13 +415,14 @@ DLDbListCFPref::resetCachedValues() void DLDbListCFPref::save() { - if (!hasChanged()) + if (!hasChanged()) { return; + } - // Resync from disc to make sure we don't clobber anyone elses changes. - // @@@ This is probably already done by the next layer up so we don't - // really need to do it here again. - loadPropertyList(true); + // Resync from disc to make sure we don't clobber anyone elses changes. + // @@@ This is probably already done by the next layer up so we don't + // really need to do it here again. + loadPropertyList(true); // Do the searchList first since it might end up invoking defaultDLDbIdentifier() which can set // mLoginDLDbIdentifierSet and mDefaultDLDbIdentifierSet to true. @@ -1034,6 +1035,12 @@ DLDbListCFPref::defaultDLDbIdentifier() if (mDefaultDLDbIdentifier.mImpl != NULL && actualIdentifier.mImpl != NULL) { st_result = stat(actualIdentifier.dbName(), &st); + + // Always claim that the system keychain exists for purposes of the search list + if (st_result && 0 == strncmp(actualIdentifier.dbName(), kSystemKeychainPath, strlen(kSystemKeychainPath))) { + secnotice("secpref", "System keychain (%s) does not exist. Continuing as if it does...", actualIdentifier.dbName()); + st_result = 0; + } } if (st_result)