Modified: trunk/Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm (255873 => 255874)
--- trunk/Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm 2020-02-05 23:57:44 UTC (rev 255873)
+++ trunk/Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm 2020-02-06 00:06:20 UTC (rev 255874)
@@ -40,9 +40,9 @@
class SandboxExtensionImpl {
WTF_MAKE_FAST_ALLOCATED;
public:
- static std::unique_ptr<SandboxExtensionImpl> create(const char* path, SandboxExtension::Type type, Optional<audit_token_t> auditToken = WTF::nullopt)
+ static std::unique_ptr<SandboxExtensionImpl> create(const char* path, SandboxExtension::Type type, Optional<audit_token_t> auditToken = WTF::nullopt, OptionSet<SandboxExtension::Flags> flags = SandboxExtension::Flags::Default)
{
- std::unique_ptr<SandboxExtensionImpl> impl { new SandboxExtensionImpl(path, type, auditToken) };
+ std::unique_ptr<SandboxExtensionImpl> impl { new SandboxExtensionImpl(path, type, auditToken, flags) };
if (!impl->m_token)
return nullptr;
return impl;
@@ -84,18 +84,22 @@
}
private:
- char* sandboxExtensionForType(const char* path, SandboxExtension::Type type, Optional<audit_token_t> auditToken)
+ char* sandboxExtensionForType(const char* path, SandboxExtension::Type type, Optional<audit_token_t> auditToken, OptionSet<SandboxExtension::Flags> flags)
{
+ uint32_t extensionFlags = 0;
+ if (flags & SandboxExtension::Flags::NoReport)
+ extensionFlags |= SANDBOX_EXTENSION_NO_REPORT;
+
switch (type) {
case SandboxExtension::Type::ReadOnly:
- return sandbox_extension_issue_file(APP_SANDBOX_READ, path, 0);
+ return sandbox_extension_issue_file(APP_SANDBOX_READ, path, extensionFlags);
case SandboxExtension::Type::ReadWrite:
- return sandbox_extension_issue_file(APP_SANDBOX_READ_WRITE, path, 0);
+ return sandbox_extension_issue_file(APP_SANDBOX_READ_WRITE, path, extensionFlags);
case SandboxExtension::Type::Mach:
if (!auditToken)
- return sandbox_extension_issue_mach("com.apple.webkit.extension.mach"_s, path, 0);
+ return sandbox_extension_issue_mach("com.apple.webkit.extension.mach"_s, path, extensionFlags);
#if HAVE(SANDBOX_ISSUE_MACH_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN)
- return sandbox_extension_issue_mach_to_process("com.apple.webkit.extension.mach"_s, path, 0, *auditToken);
+ return sandbox_extension_issue_mach_to_process("com.apple.webkit.extension.mach"_s, path, extensionFlags, *auditToken);
#else
UNUSED_PARAM(auditToken);
ASSERT_NOT_REACHED();
@@ -102,12 +106,12 @@
return nullptr;
#endif
case SandboxExtension::Type::Generic:
- return sandbox_extension_issue_generic(path, 0);
+ return sandbox_extension_issue_generic(path, extensionFlags);
case SandboxExtension::Type::ReadByProcess:
#if HAVE(SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN)
if (!auditToken)
return nullptr;
- return sandbox_extension_issue_file_to_process(APP_SANDBOX_READ, path, 0, *auditToken);
+ return sandbox_extension_issue_file_to_process(APP_SANDBOX_READ, path, extensionFlags, *auditToken);
#else
UNUSED_PARAM(auditToken);
ASSERT_NOT_REACHED();
@@ -116,8 +120,8 @@
}
}
- SandboxExtensionImpl(const char* path, SandboxExtension::Type type, Optional<audit_token_t> auditToken)
- : m_token { sandboxExtensionForType(path, type, auditToken) }
+ SandboxExtensionImpl(const char* path, SandboxExtension::Type type, Optional<audit_token_t> auditToken, OptionSet<SandboxExtension::Flags> flags)
+ : m_token { sandboxExtensionForType(path, type, auditToken, flags) }
{
}
@@ -336,11 +340,11 @@
return true;
}
-bool SandboxExtension::createHandleForMachLookup(const String& service, Optional<audit_token_t> auditToken, Handle& handle)
+bool SandboxExtension::createHandleForMachLookup(const String& service, Optional<audit_token_t> auditToken, Handle& handle, OptionSet<Flags> flags)
{
ASSERT(!handle.m_sandboxExtension);
- handle.m_sandboxExtension = SandboxExtensionImpl::create(service.utf8().data(), Type::Mach, auditToken);
+ handle.m_sandboxExtension = SandboxExtensionImpl::create(service.utf8().data(), Type::Mach, auditToken, flags);
if (!handle.m_sandboxExtension) {
WTFLogAlways("Could not create a '%s' sandbox extension", service.utf8().data());
return false;
Modified: trunk/Source/WebKit/Shared/SandboxExtension.h (255873 => 255874)
--- trunk/Source/WebKit/Shared/SandboxExtension.h 2020-02-05 23:57:44 UTC (rev 255873)
+++ trunk/Source/WebKit/Shared/SandboxExtension.h 2020-02-06 00:06:20 UTC (rev 255874)
@@ -27,6 +27,7 @@
#include <wtf/Forward.h>
#include <wtf/Noncopyable.h>
+#include <wtf/OptionSet.h>
#include <wtf/ProcessID.h>
#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
@@ -52,6 +53,11 @@
ReadByProcess
};
+ enum class Flags : uint8_t {
+ Default,
+ NoReport
+ };
+
class Handle {
WTF_MAKE_NONCOPYABLE(Handle);
public:
@@ -105,7 +111,7 @@
static String createHandleForTemporaryFile(const String& prefix, Type, Handle&);
static bool createHandleForGenericExtension(const String& extensionClass, Handle&);
#if HAVE(AUDIT_TOKEN)
- static bool createHandleForMachLookup(const String& service, Optional<audit_token_t>, Handle&);
+ static bool createHandleForMachLookup(const String& service, Optional<audit_token_t>, Handle&, OptionSet<Flags> = Flags::Default);
static bool createHandleForReadByAuditToken(const String& path, audit_token_t, Handle&);
#endif
~SandboxExtension();
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (255873 => 255874)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2020-02-05 23:57:44 UTC (rev 255873)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2020-02-06 00:06:20 UTC (rev 255874)
@@ -50,6 +50,7 @@
#import <WebCore/MIMETypeRegistry.h>
#import <WebCore/NetworkStorageSession.h>
#import <WebCore/NotImplemented.h>
+#import <WebCore/PictureInPictureSupport.h>
#import <WebCore/PlatformPasteboard.h>
#import <WebCore/RuntimeApplicationChecks.h>
#import <WebCore/SharedBuffer.h>
@@ -60,6 +61,7 @@
#import <wtf/ProcessPrivilege.h>
#import <wtf/SoftLinking.h>
#import <wtf/cocoa/Entitlements.h>
+#import <wtf/spi/darwin/SandboxSPI.h>
#import <wtf/spi/darwin/dyldSPI.h>
#if PLATFORM(MAC)
@@ -327,7 +329,7 @@
if (isInternalInstall()) {
SandboxExtension::Handle diagnosticsExtensionHandle;
- SandboxExtension::createHandleForMachLookup("com.apple.diagnosticd", WTF::nullopt, diagnosticsExtensionHandle);
+ SandboxExtension::createHandleForMachLookup("com.apple.diagnosticd", WTF::nullopt, diagnosticsExtensionHandle, SandboxExtension::Flags::NoReport);
parameters.diagnosticsExtensionHandle = WTFMove(diagnosticsExtensionHandle);
}
#endif