Title: [294428] trunk/Source/WebKit/UIProcess
Revision
294428
Author
pvol...@apple.com
Date
2022-05-18 13:39:03 -0700 (Wed, 18 May 2022)

Log Message

Audit token for font sandbox extension is sometimes wrong
https://bugs.webkit.org/show_bug.cgi?id=240547

Reviewed by Chris Dumez.

Audit token for font sandbox extension is sometimes wrong. We must get the audit token from the correct WebProcessProxy.

(WebKit::WebPageProxy::switchFromStaticFontRegistryToUserFontRegistry):
(WebKit::WebPageProxy::fontdMachExtensionHandle): Deleted.
* Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm:
(WebKit::WebProcessProxy::fontdMachExtensionHandle):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebProcessProxy.h:

Canonical link: https://commits.webkit.org/250710@main

Modified Paths

Diff

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm (294427 => 294428)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm	2022-05-18 20:01:09 UTC (rev 294427)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm	2022-05-18 20:39:03 UTC (rev 294428)
@@ -859,17 +859,9 @@
 
 void WebPageProxy::switchFromStaticFontRegistryToUserFontRegistry()
 {
-    process().send(Messages::WebProcess::SwitchFromStaticFontRegistryToUserFontRegistry(fontdMachExtensionHandle(SandboxExtension::MachBootstrapOptions::EnableMachBootstrap)), 0);
+    process().send(Messages::WebProcess::SwitchFromStaticFontRegistryToUserFontRegistry(process().fontdMachExtensionHandle(SandboxExtension::MachBootstrapOptions::EnableMachBootstrap)), 0);
 }
 
-SandboxExtension::Handle WebPageProxy::fontdMachExtensionHandle(SandboxExtension::MachBootstrapOptions machBootstrapOptions)
-{
-    SandboxExtension::Handle fontMachExtensionHandle;
-    if (auto handle = SandboxExtension::createHandleForMachLookup("com.apple.fonts"_s, process().auditToken(), machBootstrapOptions))
-        fontMachExtensionHandle = WTFMove(*handle);
-    return fontMachExtensionHandle;
-}
-
 NSDictionary *WebPageProxy::contentsOfUserInterfaceItem(NSString *userInterfaceItem)
 {
 #if ENABLE(CONTEXT_MENUS)

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm (294427 => 294428)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm	2022-05-18 20:01:09 UTC (rev 294427)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm	2022-05-18 20:39:03 UTC (rev 294428)
@@ -333,4 +333,9 @@
     return connection()->getAuditToken();
 }
 
+SandboxExtension::Handle WebProcessProxy::fontdMachExtensionHandle(SandboxExtension::MachBootstrapOptions machBootstrapOptions) const
+{
+    return SandboxExtension::createHandleForMachLookup("com.apple.fonts"_s, auditToken(), machBootstrapOptions).value_or(SandboxExtension::Handle { });
 }
+
+}

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (294427 => 294428)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2022-05-18 20:01:09 UTC (rev 294427)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2022-05-18 20:39:03 UTC (rev 294428)
@@ -8411,7 +8411,7 @@
 #endif
 #if HAVE(STATIC_FONT_REGISTRY)
     if (preferences().shouldAllowUserInstalledFonts())
-        parameters.fontMachExtensionHandle = fontdMachExtensionHandle(SandboxExtension::MachBootstrapOptions::DoNotEnableMachBootstrap);
+        parameters.fontMachExtensionHandle = process.fontdMachExtensionHandle(SandboxExtension::MachBootstrapOptions::DoNotEnableMachBootstrap);
 #endif
 #if HAVE(APP_ACCENT_COLORS)
     parameters.accentColor = pageClient().accentColor();

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (294427 => 294428)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.h	2022-05-18 20:01:09 UTC (rev 294427)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h	2022-05-18 20:39:03 UTC (rev 294428)
@@ -2656,8 +2656,6 @@
     static Vector<SandboxExtension::Handle> createNetworkExtensionsSandboxExtensions(WebProcessProxy&);
 #endif
 
-    SandboxExtension::Handle fontdMachExtensionHandle(SandboxExtension::MachBootstrapOptions);
-
     void didUpdateEditorState(const EditorState& oldEditorState, const EditorState& newEditorState);
 
     void runModalJavaScriptDialog(RefPtr<WebFrameProxy>&&, FrameInfoData&&, const String& message, CompletionHandler<void(WebPageProxy&, WebFrameProxy*, FrameInfoData&&, const String&, CompletionHandler<void()>&&)>&&);

Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.h (294427 => 294428)


--- trunk/Source/WebKit/UIProcess/WebProcessProxy.h	2022-05-18 20:01:09 UTC (rev 294427)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.h	2022-05-18 20:39:03 UTC (rev 294428)
@@ -435,6 +435,7 @@
 
 #if PLATFORM(COCOA)
     std::optional<audit_token_t> auditToken() const;
+    SandboxExtension::Handle fontdMachExtensionHandle(SandboxExtension::MachBootstrapOptions) const;
 #endif
 
 protected:
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to