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"