]> git.saurik.com Git - apple/security.git/blobdiff - OSX/libsecurity_keychain/lib/SecAccess.cpp
Security-59754.80.3.tar.gz
[apple/security.git] / OSX / libsecurity_keychain / lib / SecAccess.cpp
index 4dacfa95bb05a227ba703491dbb5a75ca649b8fe..443689921f18b274d965dc6740894043f1a44d84 100644 (file)
@@ -21,7 +21,7 @@
  * @APPLE_LICENSE_HEADER_END@
  */
 
-#include <SecBase.h>
+#include <Security/SecBase.h>
 #include <Security/SecAccess.h>
 #include <Security/SecAccessPriv.h>
 #include <Security/SecTrustedApplication.h>
@@ -34,6 +34,7 @@
 
 #include <utilities/SecCFWrappers.h>
 
+#include "LegacyAPICounts.h"
 
 /* No restrictions. Permission to perform all operations on
    the resource or available to an ACL owner.  */
@@ -289,6 +290,7 @@ OSStatus SecAccessCreateFromOwnerAndACL(const CSSM_ACL_OWNER_PROTOTYPE *owner,
 
 SecAccessRef SecAccessCreateWithOwnerAndACL(uid_t userId, gid_t groupId, SecAccessOwnerType ownerType, CFArrayRef acls, CFErrorRef *error)
 {
+       COUNTLEGACYAPI
        SecAccessRef result = NULL;
 
        CSSM_ACL_PROCESS_SUBJECT_SELECTOR selector =
@@ -321,8 +323,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<CSSM_ACL_AUTHORIZATION_TAG> rights(numAcls);
 
        for (CFIndex iCnt = 0; iCnt < numAcls; iCnt++)
        {
@@ -382,7 +383,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
                        }
                }
@@ -417,6 +418,7 @@ OSStatus SecAccessGetOwnerAndACL(SecAccessRef accessRef,
 
 OSStatus SecAccessCopyOwnerAndACL(SecAccessRef accessRef, uid_t* userId, gid_t* groupId, SecAccessOwnerType* ownerType, CFArrayRef* aclList)
 {
+       COUNTLEGACYAPI
        CSSM_ACL_OWNER_PROTOTYPE_PTR owner = NULL;
        CSSM_ACL_ENTRY_INFO_PTR acls = NULL;
        uint32 aclCount = 0;
@@ -533,6 +535,7 @@ OSStatus SecAccessCopySelectedACLList(SecAccessRef accessRef,
 
 CFArrayRef SecAccessCopyMatchingACLList(SecAccessRef accessRef, CFTypeRef authorizationTag)
 {
+       COUNTLEGACYAPI
        CFArrayRef result = NULL;
        CSSM_ACL_AUTHORIZATION_TAG tag = GetACLAuthorizationTagFromString((CFStringRef)authorizationTag);
        OSStatus err = SecAccessCopySelectedACLList(accessRef, tag, &result);
@@ -565,8 +568,9 @@ CFArrayRef copyTrustedAppListFromBundle(CFStringRef bundlePath, CFStringRef trus
 
     // Make a bundle instance using the URLRef.
     secBundle = CFBundleCreate(kCFAllocatorDefault,bundleURL);
-    if (!secBundle)
+    if (!secBundle) {
         goto xit;
+    }
 
        trustedAppListFileNameWithoutExtension =
                CFStringCreateMutableCopy(NULL,CFStringGetLength(trustedAppListFileName),trustedAppListFileName);
@@ -576,19 +580,19 @@ CFArrayRef copyTrustedAppListFromBundle(CFStringRef bundlePath, CFStringRef trus
 
     // Look for a resource in the bundle by name and type
     trustedAppsURL = CFBundleCopyResourceURL(secBundle,trustedAppListFileNameWithoutExtension,CFSTR("plist"),NULL);
-    if (!trustedAppsURL)
+    if (!trustedAppsURL) {
         goto xit;
+    }
 
-    if ( trustedAppListFileNameWithoutExtension )
-               CFRelease(trustedAppListFileNameWithoutExtension);
-
-       if (!CFURLCreateDataAndPropertiesFromResource(kCFAllocatorDefault,trustedAppsURL,&xmlDataRef,NULL,NULL,&errorCode))
+    if (!CFURLCreateDataAndPropertiesFromResource(kCFAllocatorDefault,trustedAppsURL,&xmlDataRef,NULL,NULL,&errorCode)) {
         goto xit;
+    }
 
        trustedAppsPlist = CFPropertyListCreateFromXMLData(kCFAllocatorDefault,xmlDataRef,kCFPropertyListImmutable,&errorString);
     trustedAppList = (CFArrayRef)trustedAppsPlist;
 
 xit:
+    CFReleaseNull(trustedAppListFileNameWithoutExtension);
     if (bundleURL)
         CFRelease(bundleURL);
     if (secBundle)
@@ -605,6 +609,7 @@ xit:
 
 OSStatus SecAccessCreateWithTrustedApplications(CFStringRef trustedApplicationsPListPath, CFStringRef accessLabel, Boolean allowAny, SecAccessRef* returnedAccess)
 {
+       COUNTLEGACYAPI
        OSStatus err = errSecSuccess;
        SecAccessRef accessToReturn=nil;
        CFMutableArrayRef trustedApplications=nil;