]> git.saurik.com Git - apple/security.git/blobdiff - OSX/libsecurity_codesigning/lib/SecStaticCode.cpp
Security-59754.80.3.tar.gz
[apple/security.git] / OSX / libsecurity_codesigning / lib / SecStaticCode.cpp
index b240b4b899ee1c26dd02847bed4ac0330f9a4e50..13d7b0f7c7f3d4b7d62a13c5cd5b956e2cffefa6 100644 (file)
@@ -122,21 +122,27 @@ OSStatus SecStaticCodeCheckValidityWithErrors(SecStaticCodeRef staticCodeRef, Se
                | kSecCSCheckGatekeeperArchitectures
                | kSecCSRestrictSymlinks
                | kSecCSRestrictToAppLike
-        | kSecCSUseSoftwareSigningCert
-           | kSecCSValidatePEH
+               | kSecCSUseSoftwareSigningCert
+               | kSecCSValidatePEH
                | kSecCSSingleThreaded
+               | kSecCSApplyEmbeddedPolicy
+               | kSecCSSkipRootVolumeExceptions
+               | kSecCSSkipXattrFiles
        );
 
        if (errors)
                flags |= kSecCSFullReport;      // internal-use flag
 
+#if !TARGET_OS_OSX
+       flags |= kSecCSApplyEmbeddedPolicy;
+#endif
+
        SecPointer<SecStaticCode> code = SecStaticCode::requiredStatic(staticCodeRef);
        code->setValidationFlags(flags);
        const SecRequirement *req = SecRequirement::optional(requirementRef);
        DTRACK(CODESIGN_EVAL_STATIC, code, (char*)code->mainExecutablePath().c_str());
        code->staticValidate(flags, req);
 
-#if TARGET_OS_IPHONE
     // Everything checked out correctly but we need to make sure that when
     // we validated the code directory, we trusted the signer.  We defer this
     // until now because the caller may still trust the signer via a
@@ -144,10 +150,9 @@ OSStatus SecStaticCodeCheckValidityWithErrors(SecStaticCodeRef staticCodeRef, Se
     // the directory, we potentially skip resource validation even though the
     // caller will go on to trust the signature
     // <rdar://problem/6075501> Applications that are validated against a provisioning profile do not have their resources checked
-    if (code->trustedSigningCertChain() == false) {
+    if ((flags & kSecCSApplyEmbeddedPolicy) && code->trustedSigningCertChain() == false) {
         return CSError::cfError(errors, errSecCSSignatureUntrusted);
     }
-#endif
 
 
        END_CSAPI_ERRORS
@@ -251,7 +256,7 @@ OSStatus SecCodeMapMemory(SecStaticCodeRef codeRef, SecCSFlags flags)
                                MacOSError::throwMe(errSecCSNoMainExecutable);
                        }
 
-                       auto_ptr<MachO> arch(execImage->architecture());
+                       unique_ptr<MachO> arch(execImage->architecture());
                        if (arch.get() == NULL) {
                                MacOSError::throwMe(errSecCSNoMainExecutable);
                        }