Title: [271482] trunk/Source
Revision
271482
Author
[email protected]
Date
2021-01-14 07:31:19 -0800 (Thu, 14 Jan 2021)

Log Message

[GPUP][iOS] Create sandbox extensions for cache and temp directory
https://bugs.webkit.org/show_bug.cgi?id=220595
<rdar://problem/72450307>

Reviewed by Chris Dumez.

Source/WebKit:

Create sandbox extensions for GPU process access to cache and temp directory.

* GPUProcess/GPUProcess.cpp:
(WebKit::GPUProcess::initializeGPUProcess):
* GPUProcess/GPUProcessCreationParameters.cpp:
(WebKit::GPUProcessCreationParameters::encode const):
(WebKit::GPUProcessCreationParameters::decode):
* GPUProcess/GPUProcessCreationParameters.h:
* UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::GPUProcessProxy::GPUProcessProxy):

Source/WTF:

Add USE define for using sandbox extensions to grant access to cache and temp directory.

* wtf/PlatformUse.h:

Modified Paths

Diff

Modified: trunk/Source/WTF/ChangeLog (271481 => 271482)


--- trunk/Source/WTF/ChangeLog	2021-01-14 14:30:19 UTC (rev 271481)
+++ trunk/Source/WTF/ChangeLog	2021-01-14 15:31:19 UTC (rev 271482)
@@ -1,3 +1,15 @@
+2021-01-14  Per Arne Vollan  <[email protected]>
+
+        [GPUP][iOS] Create sandbox extensions for cache and temp directory
+        https://bugs.webkit.org/show_bug.cgi?id=220595
+        <rdar://problem/72450307>
+
+        Reviewed by Chris Dumez.
+
+        Add USE define for using sandbox extensions to grant access to cache and temp directory.
+
+        * wtf/PlatformUse.h:
+
 2021-01-13  Myles C. Maxfield  <[email protected]>
 
         Delete sexist comment

Modified: trunk/Source/WTF/wtf/PlatformUse.h (271481 => 271482)


--- trunk/Source/WTF/wtf/PlatformUse.h	2021-01-14 14:30:19 UTC (rev 271481)
+++ trunk/Source/WTF/wtf/PlatformUse.h	2021-01-14 15:31:19 UTC (rev 271482)
@@ -326,3 +326,7 @@
 #if PLATFORM(COCOA)
 #define USE_OPENXR 0
 #endif
+
+#if PLATFORM(IOS_FAMILY)
+#define USE_SANDBOX_EXTENSIONS_FOR_CACHE_AND_TEMP_DIRECTORY_ACCESS 1
+#endif

Modified: trunk/Source/WebKit/ChangeLog (271481 => 271482)


--- trunk/Source/WebKit/ChangeLog	2021-01-14 14:30:19 UTC (rev 271481)
+++ trunk/Source/WebKit/ChangeLog	2021-01-14 15:31:19 UTC (rev 271482)
@@ -1,3 +1,22 @@
+2021-01-14  Per Arne Vollan  <[email protected]>
+
+        [GPUP][iOS] Create sandbox extensions for cache and temp directory
+        https://bugs.webkit.org/show_bug.cgi?id=220595
+        <rdar://problem/72450307>
+
+        Reviewed by Chris Dumez.
+
+        Create sandbox extensions for GPU process access to cache and temp directory.
+
+        * GPUProcess/GPUProcess.cpp:
+        (WebKit::GPUProcess::initializeGPUProcess):
+        * GPUProcess/GPUProcessCreationParameters.cpp:
+        (WebKit::GPUProcessCreationParameters::encode const):
+        (WebKit::GPUProcessCreationParameters::decode):
+        * GPUProcess/GPUProcessCreationParameters.h:
+        * UIProcess/GPU/GPUProcessProxy.cpp:
+        (WebKit::GPUProcessProxy::GPUProcessProxy):
+
 2021-01-13  Tim Horton  <[email protected]>
 
         REGRESSION (r266634): Messages crashes sometimes while scrolling around and playing YouTube videos

Modified: trunk/Source/WebKit/GPUProcess/GPUProcess.cpp (271481 => 271482)


--- trunk/Source/WebKit/GPUProcess/GPUProcess.cpp	2021-01-14 14:30:19 UTC (rev 271481)
+++ trunk/Source/WebKit/GPUProcess/GPUProcess.cpp	2021-01-14 15:31:19 UTC (rev 271482)
@@ -143,6 +143,11 @@
 #endif
 #endif
 
+#if USE(SANDBOX_EXTENSIONS_FOR_CACHE_AND_TEMP_DIRECTORY_ACCESS)
+    SandboxExtension::consumePermanently(parameters.containerCachesDirectoryExtensionHandle);
+    SandboxExtension::consumePermanently(parameters.containerTemporaryDirectoryExtensionHandle);
+#endif
+    
 #if HAVE(VISIBILITY_PROPAGATION_VIEW)
     m_contextForVisibilityPropagation = LayerHostingContext::createForExternalHostingProcess({
         m_canShowWhileLocked

Modified: trunk/Source/WebKit/GPUProcess/GPUProcessCreationParameters.cpp (271481 => 271482)


--- trunk/Source/WebKit/GPUProcess/GPUProcessCreationParameters.cpp	2021-01-14 14:30:19 UTC (rev 271481)
+++ trunk/Source/WebKit/GPUProcess/GPUProcessCreationParameters.cpp	2021-01-14 15:31:19 UTC (rev 271482)
@@ -50,6 +50,11 @@
 #endif
 #endif
     encoder << parentPID;
+
+#if USE(SANDBOX_EXTENSIONS_FOR_CACHE_AND_TEMP_DIRECTORY_ACCESS)
+    encoder << containerCachesDirectoryExtensionHandle;
+    encoder << containerTemporaryDirectoryExtensionHandle;
+#endif
 }
 
 bool GPUProcessCreationParameters::decode(IPC::Decoder& decoder, GPUProcessCreationParameters& result)
@@ -68,6 +73,21 @@
 #endif
     if (!decoder.decode(result.parentPID))
         return false;
+
+#if USE(SANDBOX_EXTENSIONS_FOR_CACHE_AND_TEMP_DIRECTORY_ACCESS)
+    Optional<SandboxExtension::Handle> containerCachesDirectoryExtensionHandle;
+    decoder >> containerCachesDirectoryExtensionHandle;
+    if (!containerCachesDirectoryExtensionHandle)
+        return false;
+    result.containerCachesDirectoryExtensionHandle = WTFMove(*containerCachesDirectoryExtensionHandle);
+
+    Optional<SandboxExtension::Handle> containerTemporaryDirectoryExtensionHandle;
+    decoder >> containerTemporaryDirectoryExtensionHandle;
+    if (!containerTemporaryDirectoryExtensionHandle)
+        return false;
+    result.containerTemporaryDirectoryExtensionHandle = WTFMove(*containerTemporaryDirectoryExtensionHandle);
+#endif
+
     return true;
 }
 

Modified: trunk/Source/WebKit/GPUProcess/GPUProcessCreationParameters.h (271481 => 271482)


--- trunk/Source/WebKit/GPUProcess/GPUProcessCreationParameters.h	2021-01-14 14:30:19 UTC (rev 271481)
+++ trunk/Source/WebKit/GPUProcess/GPUProcessCreationParameters.h	2021-01-14 15:31:19 UTC (rev 271482)
@@ -49,6 +49,11 @@
 #endif
     ProcessID parentPID;
 
+#if USE(SANDBOX_EXTENSIONS_FOR_CACHE_AND_TEMP_DIRECTORY_ACCESS)
+    SandboxExtension::Handle containerCachesDirectoryExtensionHandle;
+    SandboxExtension::Handle containerTemporaryDirectoryExtensionHandle;
+#endif
+
     void encode(IPC::Encoder&) const;
     static WARN_UNUSED_RETURN bool decode(IPC::Decoder&, GPUProcessCreationParameters&);
 };

Modified: trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp (271481 => 271482)


--- trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp	2021-01-14 14:30:19 UTC (rev 271481)
+++ trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp	2021-01-14 15:31:19 UTC (rev 271482)
@@ -49,6 +49,11 @@
 #include <wtf/spi/darwin/XPCSPI.h>
 #endif
 
+#if USE(SANDBOX_EXTENSIONS_FOR_CACHE_AND_TEMP_DIRECTORY_ACCESS)
+#include "SandboxUtilities.h"
+#include <wtf/FileSystem.h>
+#endif
+
 #define MESSAGE_CHECK(assertion) MESSAGE_CHECK_BASE(assertion, this->connection())
 
 namespace WebKit {
@@ -106,6 +111,18 @@
     return singleton().get();
 }
 
+#if USE(SANDBOX_EXTENSIONS_FOR_CACHE_AND_TEMP_DIRECTORY_ACCESS)
+static String gpuProcessCachesDirectory()
+{
+    String path = pathForProcessContainer() + "/Library/Caches/com.apple.WebKit.GPU/";
+    path = stringByResolvingSymlinksInPath(path);
+
+    FileSystem::makeAllDirectories(path);
+    
+    return path;
+}
+#endif
+
 GPUProcessProxy::GPUProcessProxy()
     : AuxiliaryProcessProxy()
     , m_throttler(*this, false)
@@ -132,6 +149,17 @@
 #endif
     parameters.parentPID = getCurrentProcessID();
 
+#if USE(SANDBOX_EXTENSIONS_FOR_CACHE_AND_TEMP_DIRECTORY_ACCESS)
+    auto containerCachesDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(gpuProcessCachesDirectory());
+    auto containerTemporaryDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(WebProcessPool::containerTemporaryDirectory());
+
+    if (!containerCachesDirectory.isEmpty())
+        SandboxExtension::createHandleWithoutResolvingPath(containerCachesDirectory, SandboxExtension::Type::ReadWrite, parameters.containerCachesDirectoryExtensionHandle);
+
+    if (!containerTemporaryDirectory.isEmpty())
+        SandboxExtension::createHandleWithoutResolvingPath(containerTemporaryDirectory, SandboxExtension::Type::ReadWrite, parameters.containerTemporaryDirectoryExtensionHandle);
+#endif
+
     // Initialize the GPU process.
     send(Messages::GPUProcess::InitializeGPUProcess(parameters), 0);
     updateProcessAssertion();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to