Title: [267498] trunk/Source/WebKit
Revision
267498
Author
[email protected]
Date
2020-09-23 12:52:03 -0700 (Wed, 23 Sep 2020)

Log Message

[macOS] Issue sandbox extension for the diagnostic daemon
https://bugs.webkit.org/show_bug.cgi?id=216834
<rdar://problem/58496834>

Reviewed by Brent Fulgham.

* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::isInternalInstall):
(WebKit::agxCompilerClasses):
(WebKit::diagnosticServices):
(WebKit::WebProcessPool::platformInitializeWebProcess):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
* WebProcess/com.apple.WebProcess.sb.in:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (267497 => 267498)


--- trunk/Source/WebKit/ChangeLog	2020-09-23 19:50:23 UTC (rev 267497)
+++ trunk/Source/WebKit/ChangeLog	2020-09-23 19:52:03 UTC (rev 267498)
@@ -1,3 +1,24 @@
+2020-09-23  Per Arne Vollan  <[email protected]>
+
+        [macOS] Issue sandbox extension for the diagnostic daemon
+        https://bugs.webkit.org/show_bug.cgi?id=216834
+        <rdar://problem/58496834>
+
+        Reviewed by Brent Fulgham.
+
+        * Shared/WebProcessCreationParameters.cpp:
+        (WebKit::WebProcessCreationParameters::encode const):
+        (WebKit::WebProcessCreationParameters::decode):
+        * Shared/WebProcessCreationParameters.h:
+        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+        (WebKit::isInternalInstall):
+        (WebKit::agxCompilerClasses):
+        (WebKit::diagnosticServices):
+        (WebKit::WebProcessPool::platformInitializeWebProcess):
+        * WebProcess/cocoa/WebProcessCocoa.mm:
+        (WebKit::WebProcess::platformInitializeWebProcess):
+        * WebProcess/com.apple.WebProcess.sb.in:
+
 2020-09-23  Fujii Hironori  <[email protected]>
 
         Remove ENABLE_SVG_FONTS macro

Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp (267497 => 267498)


--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp	2020-09-23 19:50:23 UTC (rev 267497)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp	2020-09-23 19:52:03 UTC (rev 267498)
@@ -162,8 +162,8 @@
     encoder << containerManagerExtensionHandle;
     encoder << mobileGestaltExtensionHandle;
 
+    encoder << diagnosticsExtensionHandles;
 #if PLATFORM(IOS_FAMILY)
-    encoder << diagnosticsExtensionHandles;
     encoder << dynamicMachExtensionHandles;
     encoder << dynamicIOKitExtensionHandles;
 #endif
@@ -438,7 +438,6 @@
         return false;
     parameters.mobileGestaltExtensionHandle = WTFMove(*mobileGestaltExtensionHandle);
 
-#if PLATFORM(IOS_FAMILY)
     Optional<SandboxExtension::HandleArray> diagnosticsExtensionHandles;
     decoder >> diagnosticsExtensionHandles;
     if (!diagnosticsExtensionHandles)
@@ -445,6 +444,7 @@
         return false;
     parameters.diagnosticsExtensionHandles = WTFMove(*diagnosticsExtensionHandles);
 
+#if PLATFORM(IOS_FAMILY)
     Optional<SandboxExtension::HandleArray> dynamicMachExtensionHandles;
     decoder >> dynamicMachExtensionHandles;
     if (!dynamicMachExtensionHandles)

Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.h (267497 => 267498)


--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.h	2020-09-23 19:50:23 UTC (rev 267497)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.h	2020-09-23 19:52:03 UTC (rev 267498)
@@ -206,8 +206,8 @@
     Optional<SandboxExtension::Handle> containerManagerExtensionHandle;
     Optional<SandboxExtension::Handle> mobileGestaltExtensionHandle;
 
+    SandboxExtension::HandleArray diagnosticsExtensionHandles;
 #if PLATFORM(IOS_FAMILY)
-    SandboxExtension::HandleArray diagnosticsExtensionHandles;
     SandboxExtension::HandleArray dynamicMachExtensionHandles;
     SandboxExtension::HandleArray dynamicIOKitExtensionHandles;
 #endif

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (267497 => 267498)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2020-09-23 19:50:23 UTC (rev 267497)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2020-09-23 19:52:03 UTC (rev 267498)
@@ -201,13 +201,15 @@
 #endif
 }
 
-#if PLATFORM(IOS_FAMILY)
 static bool isInternalInstall()
 {
+#if PLATFORM(IOS_FAMILY)
     static bool isInternal = MGGetBoolAnswer(kMGQAppleInternalInstallCapability);
+#else
+    static bool isInternal = FileSystem::fileIsDirectory("/AppleInternal", FileSystem::ShouldFollowSymbolicLinks::No);
+#endif
     return isInternal;
 }
-#endif
 
 // FIXME(207716): The following should be removed when the GPU process is complete.
 static const Vector<ASCIILiteral>& mediaRelatedMachServices()
@@ -260,16 +262,6 @@
     return services;
 }
 
-static const Vector<ASCIILiteral>& diagnosticServices()
-{
-    ASSERT(isMainThread());
-    static const auto services = makeNeverDestroyed(Vector<ASCIILiteral> {
-        "com.apple.diagnosticd"_s,
-        "com.apple.osanalytics.osanalyticshelper"_s
-    });
-    return services;
-}
-
 static const Vector<ASCIILiteral>& agxCompilerClasses()
 {
     ASSERT(isMainThread());
@@ -287,7 +279,6 @@
     });
     return iokitClasses;
 }
-
 #endif
 
 #if PLATFORM(IOS)
@@ -302,6 +293,19 @@
 }
 #endif
 
+static const Vector<ASCIILiteral>& diagnosticServices()
+{
+    ASSERT(isMainThread());
+    static const auto services = makeNeverDestroyed(Vector<ASCIILiteral> {
+        "com.apple.diagnosticd"_s,
+#if PLATFORM(IOS_FAMILY)
+        "com.apple.osanalytics.osanalyticshelper"_s
+#endif
+    });
+    return services;
+}
+
+
 static bool requiresContainerManagerAccess()
 {
 #if PLATFORM(MAC)
@@ -421,18 +425,16 @@
 #if PLATFORM(IOS_FAMILY)
     if (!WebCore::IOSApplication::isMobileSafari())
         parameters.dynamicMachExtensionHandles = SandboxExtension::createHandlesForMachLookup(nonBrowserServices(), WTF::nullopt);
-    
-    if (isInternalInstall())
-        parameters.diagnosticsExtensionHandles = SandboxExtension::createHandlesForMachLookup(diagnosticServices(), WTF::nullopt, SandboxExtension::Flags::NoReport);
 
     if (WebCore::deviceHasAGXCompilerService())
         parameters.dynamicIOKitExtensionHandles = SandboxExtension::createHandlesForIOKitClassExtensions(agxCompilerClasses(), WTF::nullopt);
 #endif
-    
-#if PLATFORM(COCOA)
+
+    if (isInternalInstall())
+        parameters.diagnosticsExtensionHandles = SandboxExtension::createHandlesForMachLookup(diagnosticServices(), WTF::nullopt, SandboxExtension::Flags::NoReport);
+
     parameters.systemHasBattery = systemHasBattery();
     parameters.systemHasAC = cachedSystemHasAC().valueOr(true);
-#endif
 
     if (requiresContainerManagerAccess()) {
         SandboxExtension::Handle handle;

Modified: trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (267497 => 267498)


--- trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm	2020-09-23 19:50:23 UTC (rev 267497)
+++ trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm	2020-09-23 19:52:03 UTC (rev 267498)
@@ -311,8 +311,8 @@
     if (parameters.containerManagerExtensionHandle)
         SandboxExtension::consumePermanently(*parameters.containerManagerExtensionHandle);
     
+    SandboxExtension::consumePermanently(parameters.diagnosticsExtensionHandles);
 #if PLATFORM(IOS_FAMILY)
-    SandboxExtension::consumePermanently(parameters.diagnosticsExtensionHandles);
     SandboxExtension::consumePermanently(parameters.dynamicMachExtensionHandles);
     SandboxExtension::consumePermanently(parameters.dynamicIOKitExtensionHandles);
 #endif

Modified: trunk/Source/WebKit/WebProcess/com.apple.WebProcess.sb.in (267497 => 267498)


--- trunk/Source/WebKit/WebProcess/com.apple.WebProcess.sb.in	2020-09-23 19:50:23 UTC (rev 267497)
+++ trunk/Source/WebKit/WebProcess/com.apple.WebProcess.sb.in	2020-09-23 19:52:03 UTC (rev 267498)
@@ -1000,6 +1000,7 @@
             "com.apple.cfprefsd.agent"
             "com.apple.cfprefsd.daemon"
             "com.apple.containermanagerd"
+            "com.apple.diagnosticd"
             "com.apple.tccd"
             "com.apple.BluetoothServices"
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to