X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/5c19dc3ae3bd8e40a9c028b0deddd50ff337692c..0d4552ce43ff8bf2e8666a9c5c44c3590eb117a8:/OSX/libsecurity_keychain/lib/SecAccess.cpp diff --git a/OSX/libsecurity_keychain/lib/SecAccess.cpp b/OSX/libsecurity_keychain/lib/SecAccess.cpp index 9491f85c..91680d82 100644 --- a/OSX/libsecurity_keychain/lib/SecAccess.cpp +++ b/OSX/libsecurity_keychain/lib/SecAccess.cpp @@ -21,16 +21,17 @@ * @APPLE_LICENSE_HEADER_END@ */ -#include +#include #include #include #include #include #include +#include +#include #include "SecBridge.h" #include -#undef secdebug #include @@ -66,6 +67,8 @@ const CFStringRef kSecACLAuthorizationKeychainItemDelete = CFSTR("ACLAuthorizati const CFStringRef kSecACLAuthorizationChangeACL = CFSTR("ACLAuthorizationChangeACL"); const CFStringRef kSecACLAuthorizationChangeOwner = CFSTR("ACLAuthorizationChangeOwner"); +const CFStringRef kSecACLAuthorizationPartitionID = CFSTR("ACLAuthorizationPartitionID"); +const CFStringRef kSecACLAuthorizationIntegrity = CFSTR("ACLAuthorizationIntegrity"); static CFArrayRef copyTrustedAppListFromBundle(CFStringRef bundlePath, CFStringRef trustedAppListFileName); @@ -95,8 +98,9 @@ static CFStringRef gKeys[] = kSecACLAuthorizationKeychainItemDelete, kSecACLAuthorizationChangeACL, - kSecACLAuthorizationChangeOwner - + kSecACLAuthorizationChangeOwner, + kSecACLAuthorizationPartitionID, + kSecACLAuthorizationIntegrity }; static sint32 gValues[] = @@ -121,7 +125,9 @@ static sint32 gValues[] = CSSM_ACL_AUTHORIZATION_DB_MODIFY, CSSM_ACL_AUTHORIZATION_DB_DELETE, CSSM_ACL_AUTHORIZATION_CHANGE_ACL, - CSSM_ACL_AUTHORIZATION_CHANGE_OWNER + CSSM_ACL_AUTHORIZATION_CHANGE_OWNER, + CSSM_ACL_AUTHORIZATION_PARTITION_ID, + CSSM_ACL_AUTHORIZATION_INTEGRITY }; static @@ -226,6 +232,7 @@ CFStringRef GetAuthStringFromACLAuthorizationTag(sint32 tag) { result = (CFStringRef)CFDictionaryGetValue(gTagMapping, aNum); } + CFReleaseSafe(aNum); return result; } @@ -287,7 +294,7 @@ SecAccessRef SecAccessCreateWithOwnerAndACL(uid_t userId, gid_t groupId, SecAcce CSSM_ACL_PROCESS_SUBJECT_SELECTOR selector = { CSSM_ACL_PROCESS_SELECTOR_CURRENT_VERSION, // selector version - ownerType, + int_cast(ownerType), userId, groupId }; @@ -314,8 +321,7 @@ SecAccessRef SecAccessCreateWithOwnerAndACL(uid_t userId, gid_t groupId, SecAcce CFRelease(debugStr); #endif - CSSM_ACL_AUTHORIZATION_TAG rights[numAcls]; - memset(rights, 0, sizeof(rights)); + std::vector rights(numAcls); for (CFIndex iCnt = 0; iCnt < numAcls; iCnt++) { @@ -375,7 +381,7 @@ SecAccessRef SecAccessCreateWithOwnerAndACL(uid_t userId, gid_t groupId, SecAcce { CSSM_LIST_TYPE_UNKNOWN, &subject1, &subject2 }, false, // Delegate // rights for this entry - { (uint32)(sizeof(rights) / sizeof(rights[0])), rights }, + { (uint32)numAcls, rights.data() }, // rest is defaulted } } @@ -572,9 +578,6 @@ CFArrayRef copyTrustedAppListFromBundle(CFStringRef bundlePath, CFStringRef trus if (!trustedAppsURL) goto xit; - if ( trustedAppListFileNameWithoutExtension ) - CFRelease(trustedAppListFileNameWithoutExtension); - if (!CFURLCreateDataAndPropertiesFromResource(kCFAllocatorDefault,trustedAppsURL,&xmlDataRef,NULL,NULL,&errorCode)) goto xit; @@ -582,6 +585,7 @@ CFArrayRef copyTrustedAppListFromBundle(CFStringRef bundlePath, CFStringRef trus trustedAppList = (CFArrayRef)trustedAppsPlist; xit: + CFReleaseNull(trustedAppListFileNameWithoutExtension); if (bundleURL) CFRelease(bundleURL); if (secBundle)