Title: [260137] trunk/Source/WebKit
- Revision
- 260137
- Author
- pvol...@apple.com
- Date
- 2020-04-15 10:22:00 -0700 (Wed, 15 Apr 2020)
Log Message
[iOS] Potential crash under WebProcess::platformInitializeWebProcess
https://bugs.webkit.org/show_bug.cgi?id=210547
Reviewed by Brent Fulgham.
If the UI process fails to issue an extension to the runningboard service, the WebContent process will crash
while trying to consume this extension.
No new tests, since the test runners are unsandboxed, so issuing the extension will always succeed.
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (260136 => 260137)
--- trunk/Source/WebKit/ChangeLog 2020-04-15 16:39:34 UTC (rev 260136)
+++ trunk/Source/WebKit/ChangeLog 2020-04-15 17:22:00 UTC (rev 260137)
@@ -1,3 +1,20 @@
+2020-04-15 Per Arne Vollan <pvol...@apple.com>
+
+ [iOS] Potential crash under WebProcess::platformInitializeWebProcess
+ https://bugs.webkit.org/show_bug.cgi?id=210547
+
+ Reviewed by Brent Fulgham.
+
+ If the UI process fails to issue an extension to the runningboard service, the WebContent process will crash
+ while trying to consume this extension.
+
+ No new tests, since the test runners are unsandboxed, so issuing the extension will always succeed.
+
+ * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+ (WebKit::WebProcessPool::platformInitializeWebProcess):
+ * WebProcess/cocoa/WebProcessCocoa.mm:
+ (WebKit::WebProcess::platformInitializeWebProcess):
+
2020-04-15 Brent Fulgham <bfulg...@apple.com>
[Cocoa] Remove generic parameter serialization fallback
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (260136 => 260137)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2020-04-15 16:39:34 UTC (rev 260136)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2020-04-15 17:22:00 UTC (rev 260137)
@@ -390,8 +390,8 @@
}
SandboxExtension::Handle runningboardExtensionHandle;
- SandboxExtension::createHandleForMachLookup("com.apple.runningboard", WTF::nullopt, runningboardExtensionHandle, SandboxExtension::Flags::NoReport);
- parameters.runningboardExtensionHandle = WTFMove(runningboardExtensionHandle);
+ if (SandboxExtension::createHandleForMachLookup("com.apple.runningboard", WTF::nullopt, runningboardExtensionHandle, SandboxExtension::Flags::NoReport))
+ parameters.runningboardExtensionHandle = WTFMove(runningboardExtensionHandle);
#endif
#if PLATFORM(COCOA)
Modified: trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (260136 => 260137)
--- trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2020-04-15 16:39:34 UTC (rev 260136)
+++ trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2020-04-15 17:22:00 UTC (rev 260137)
@@ -178,18 +178,20 @@
#if PLATFORM(IOS_FAMILY)
- auto extension = SandboxExtension::create(WTFMove(*parameters.runningboardExtensionHandle));
- bool consumed = extension->consume();
- ASSERT_UNUSED(consumed, consumed);
+ if (parameters.runningboardExtensionHandle) {
+ auto extension = SandboxExtension::create(WTFMove(*parameters.runningboardExtensionHandle));
+ bool consumed = extension->consume();
+ ASSERT_UNUSED(consumed, consumed);
- ASSERT(!m_uiProcessDependencyProcessAssertion);
- if (auto remoteProcessID = parentProcessConnection()->remoteProcessID())
- m_uiProcessDependencyProcessAssertion = makeUnique<ProcessAssertion>(remoteProcessID, "WebContent process dependency on UIProcess"_s, ProcessAssertionType::DependentProcessLink);
- else
- RELEASE_LOG_ERROR_IF_ALLOWED(ProcessSuspension, "Unable to create a process dependency assertion on UIProcess because remoteProcessID is 0");
+ ASSERT(!m_uiProcessDependencyProcessAssertion);
+ if (auto remoteProcessID = parentProcessConnection()->remoteProcessID())
+ m_uiProcessDependencyProcessAssertion = makeUnique<ProcessAssertion>(remoteProcessID, "WebContent process dependency on UIProcess"_s, ProcessAssertionType::DependentProcessLink);
+ else
+ RELEASE_LOG_ERROR_IF_ALLOWED(ProcessSuspension, "Unable to create a process dependency assertion on UIProcess because remoteProcessID is 0");
- bool revoked = extension->revoke();
- ASSERT_UNUSED(revoked, revoked);
+ bool revoked = extension->revoke();
+ ASSERT_UNUSED(revoked, revoked);
+ }
#endif
#if !LOG_DISABLED || !RELEASE_LOG_DISABLED
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes