Attempt to fix the Apple Internal Yosemite and El Capitan builds following
authordbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 2 Apr 2016 03:21:38 +0000 (03:21 +0000)
committerdbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 2 Apr 2016 03:21:38 +0000 (03:21 +0000)
<http://trac.webkit.org/changeset/198933> (https://bugs.webkit.org/show_bug.cgi?id=155455)
<rdar://problem/25502181>

Only check the code signature of the client app if the "user-directory-suffix" sandbox
initialization parameter will not be used. This parameter is only used/passed as an
initialization parameter if the client app is not sandboxed, which seems sufficient
criterion to determine whether it is safe to honor it.

* Shared/mac/ChildProcessMac.mm:
(WebKit::ChildProcess::initializeSandbox):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@198967 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/Shared/mac/ChildProcessMac.mm

index da588e9..08da171 100644 (file)
@@ -1,3 +1,17 @@
+2016-04-01  Daniel Bates  <dabates@apple.com>
+
+        Attempt to fix the Apple Internal Yosemite and El Capitan builds following
+        <http://trac.webkit.org/changeset/198933> (https://bugs.webkit.org/show_bug.cgi?id=155455)
+        <rdar://problem/25502181>
+
+        Only check the code signature of the client app if the "user-directory-suffix" sandbox
+        initialization parameter will not be used. This parameter is only used/passed as an
+        initialization parameter if the client app is not sandboxed, which seems sufficient
+        criterion to determine whether it is safe to honor it.
+
+        * Shared/mac/ChildProcessMac.mm:
+        (WebKit::ChildProcess::initializeSandbox):
+
 2016-04-01  Jiewen Tan  <jiewen_tan@apple.com>
 
         WebKit should dispatchDidFailProvisionalLoad while loading invalid URLs
index 64aa3c7..f09f9b1 100644 (file)
@@ -208,13 +208,11 @@ void ChildProcess::initializeSandbox(const ChildProcessInitializationParameters&
         exit(EX_NOPERM);
     }
 
+    if (willUseUserDirectorySuffixInitializationParameter)
+        return;
     error = noErr;
     String clientCodeSigningIdentifier = codeSigningIdentifierForProcess(xpc_connection_get_pid(parameters.connectionIdentifier.xpcConnection.get()), error);
     bool isClientCodeSigned = !clientCodeSigningIdentifier.isNull();
-    if (isClientCodeSigned && willUseUserDirectorySuffixInitializationParameter) {
-        WTFLogAlways("%s: Only unsigned clients can specify parameter user-directory-suffix\n", getprogname());
-        exit(EX_NOPERM);
-    }
     if (isClientCodeSigned && clientCodeSigningIdentifier != parameters.clientIdentifier) {
         WTFLogAlways("%s: Code signing identifier of client differs from passed client identifier: %ld\n", getprogname(), static_cast<long>(error));
         exit(EX_NOPERM);