⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 230778 in webkit


Ignore:
Timestamp:
Apr 18, 2018, 2:06:50 PM (8 years ago)
Author:
jer.noble@apple.com
Message:

Fix entitlements and sandboxing for iphoneminimalsimulator
​https://bugs.webkit.org/show_bug.cgi?id=184692

Reviewed by Tim Horton.

Use the correct implementations for ChildProcess and NetworkProcess
when building for iphoneminimalsimulator. Stub out imlementations
which rely on methods not available in the iphoneminimalsimulator SDK.

  • Configurations/Network-OSX.entitlements: Added.
  • Configurations/NetworkService.xcconfig:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::sourceApplicationAuditData const):

  • NetworkProcess/ios/NetworkProcessIOS.mm:
  • NetworkProcess/mac/NetworkProcessMac.mm:

(WebKit::NetworkProcess::initializeProcessName):
(WebKit::overrideSystemProxies):

  • Shared/ios/ChildProcessIOS.mm:

(WebKit::ChildProcess::initializeSandbox):

  • Shared/mac/ChildProcessMac.mm:

(WebKit::ChildProcess::setApplicationIsDaemon):
(WebKit::enableSandboxStyleFileQuarantine):
(WebKit::ChildProcess::initializeSandbox):
(WebKit::ChildProcess::platformStopRunLoop):

  • Shared/mac/CodeSigning.mm:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::initializeSandbox):

Location:
trunk/Source/WebKit
Files:
2 added
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r230773 r230778  
     12018-04-18  Jer Noble  <jer.noble@apple.com>
     2
     3        Fix entitlements and sandboxing for iphoneminimalsimulator
     4        https://bugs.webkit.org/show_bug.cgi?id=184692
     5
     6        Reviewed by Tim Horton.
     7
     8        Use the correct implementations for ChildProcess and NetworkProcess
     9        when building for iphoneminimalsimulator. Stub out imlementations
     10        which rely on methods not available in the iphoneminimalsimulator SDK.
     11
     12        * Configurations/Network-OSX.entitlements: Added.
     13        * Configurations/NetworkService.xcconfig:
     14        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
     15        (WebKit::NetworkProcess::sourceApplicationAuditData const):
     16        * NetworkProcess/ios/NetworkProcessIOS.mm:
     17        * NetworkProcess/mac/NetworkProcessMac.mm:
     18        (WebKit::NetworkProcess::initializeProcessName):
     19        (WebKit::overrideSystemProxies):
     20        * Shared/ios/ChildProcessIOS.mm:
     21        (WebKit::ChildProcess::initializeSandbox):
     22        * Shared/mac/ChildProcessMac.mm:
     23        (WebKit::ChildProcess::setApplicationIsDaemon):
     24        (WebKit::enableSandboxStyleFileQuarantine):
     25        (WebKit::ChildProcess::initializeSandbox):
     26        (WebKit::ChildProcess::platformStopRunLoop):
     27        * Shared/mac/CodeSigning.mm:
     28        * WebKit.xcodeproj/project.pbxproj:
     29        * WebProcess/cocoa/WebProcessCocoa.mm:
     30        (WebKit::WebProcess::initializeSandbox):
     31
    1322018-04-18  Commit Queue  <commit-queue@webkit.org>
    233
  • trunk/Source/WebKit/Configurations/BaseXPCService.xcconfig

    r227618 r230778  
    5454WK_PATH_FROM_SERVICE_EXECUTABLE_TO_FRAMEWORK_SHALLOW_BUNDLE_YES = ../..;
    5555
    56 CODE_SIGN_ENTITLEMENTS[sdk=iphone*] = $(CODE_SIGN_ENTITLEMENTS_IOS_SKIP_INSTALL_$(SKIP_INSTALL));
     56CODE_SIGN_ENTITLEMENTS = $(CODE_SIGN_ENTITLEMENTS_$(WK_PLATFORM_NAME))
     57CODE_SIGN_ENTITLEMENTS_iphoneos = $(CODE_SIGN_ENTITLEMENTS_IOS_SKIP_INSTALL_$(SKIP_INSTALL));
     58CODE_SIGN_ENTITLEMENTS_iphonesimulator = $(CODE_SIGN_ENTITLEMENTS_IOS_SKIP_INSTALL_$(SKIP_INSTALL));
     59CODE_SIGN_ENTITLEMENTS_iphoneminimalsimulator = $(CODE_SIGN_ENTITLEMENTS_IOS_SKIP_INSTALL_$(SKIP_INSTALL));
    5760
    5861CODE_SIGN_ENTITLEMENTS_IOS_SKIP_INSTALL_ = $(CODE_SIGN_ENTITLEMENTS_IOS_SKIP_INSTALL_NO);
  • trunk/Source/WebKit/Configurations/NetworkService.xcconfig

    r227618 r230778  
    2424#include "BaseXPCService.xcconfig"
    2525
    26 WK_XPC_SERVICE_IOS_ENTITLEMENTS_BASE = Network-iOS;
     26WK_XPC_SERVICE_IOS_ENTITLEMENTS_BASE = $(WK_XPC_SERVICE_IOS_ENTITLEMENTS_BASE_$(WK_PLATFORM_NAME));
     27WK_XPC_SERVICE_IOS_ENTITLEMENTS_BASE_iphoneos = Network-iOS;
     28WK_XPC_SERVICE_IOS_ENTITLEMENTS_BASE_iphonesimulator = Network-iOS;
     29WK_XPC_SERVICE_IOS_ENTITLEMENTS_BASE_iphoneminimalsimulator = Network-iOS-minimalsimulator;
    2730
    2831OTHER_CODE_SIGN_FLAGS = $(WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS);
  • trunk/Source/WebKit/Configurations/WebContentService.Development.xcconfig

    r230378 r230778  
    2727SKIP_INSTALL[sdk=macosx*] = $(WK_RELOCATABLE_FRAMEWORKS);
    2828
    29 CODE_SIGN_ENTITLEMENTS[sdk=macosx*] = Configurations/WebContent.Development.entitlements;
     29CODE_SIGN_ENTITLEMENTS_macosx = Configurations/WebContent.Development.entitlements;
    3030
    3131WK_XPC_SERVICE_VARIANT = Development;
  • trunk/Source/WebKit/Configurations/WebContentService.xcconfig

    r230673 r230778  
    2424#include "BaseXPCService.xcconfig"
    2525
    26 WK_XPC_SERVICE_IOS_ENTITLEMENTS_BASE = WebContent-iOS;
     26WK_XPC_SERVICE_IOS_ENTITLEMENTS_BASE = $(WK_XPC_SERVICE_IOS_ENTITLEMENTS_BASE_$(WK_PLATFORM_NAME));
     27WK_XPC_SERVICE_IOS_ENTITLEMENTS_BASE_iphoneos = WebContent-iOS;
     28WK_XPC_SERVICE_IOS_ENTITLEMENTS_BASE_iphonesimulator = WebContent-iOS;
     29WK_XPC_SERVICE_IOS_ENTITLEMENTS_BASE_iphoneminimalsimulator = WebContent-iOS-minimalsimulator;
    2730
    28 CODE_SIGN_ENTITLEMENTS[sdk=macosx*] = $(CODE_SIGN_ENTITLEMENTS_OSX_WITH_XPC_DOMAIN_EXTENSION_$(WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT));
     31CODE_SIGN_ENTITLEMENTS_macosx = $(CODE_SIGN_ENTITLEMENTS_OSX_WITH_XPC_DOMAIN_EXTENSION_$(WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT));
    2932CODE_SIGN_ENTITLEMENTS_OSX_WITH_XPC_DOMAIN_EXTENSION_YES = Configurations/WebContent-OSX.entitlements;
    3033OTHER_CODE_SIGN_FLAGS = $(WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS);
  • trunk/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm

    r229978 r230778  
    155155RetainPtr<CFDataRef> NetworkProcess::sourceApplicationAuditData() const
    156156{
    157 #if PLATFORM(IOS)
     157#if PLATFORM(IOS) && !ENABLE(MINIMAL_SIMULATOR)
    158158    audit_token_t auditToken;
    159159    ASSERT(parentProcessConnection());
  • trunk/Source/WebKit/NetworkProcess/ios/NetworkProcessIOS.mm

    r223179 r230778  
    2727#import "NetworkProcess.h"
    2828
    29 #if PLATFORM(IOS)
     29#if PLATFORM(IOS) && !ENABLE(MINIMAL_SIMULATOR)
    3030
    3131#import "NetworkCache.h"
  • trunk/Source/WebKit/NetworkProcess/mac/NetworkProcessMac.mm

    r226349 r230778  
    2727#import "NetworkProcess.h"
    2828
    29 #if PLATFORM(MAC)
     29#if PLATFORM(MAC) || ENABLE(MINIMAL_SIMULATOR)
    3030
    3131#import "NetworkCache.h"
    … …  
    5959void NetworkProcess::initializeProcessName(const ChildProcessInitializationParameters& parameters)
    6060{
     61#if !ENABLE(MINIMAL_SIMULATOR)
    6162    NSString *applicationName = [NSString stringWithFormat:WEB_UI_STRING("%@ Networking", "visible name of the network process. The argument is the application name."), (NSString *)parameters.uiProcessName];
    6263    _LSSetApplicationInformationItem(kLSDefaultSessionID, _LSGetCurrentApplicationASN(), _kLSDisplayNameKey, (CFStringRef)applicationName, nullptr);
     64#endif
    6365}
    6466
    … …  
    8385        URL httpsProxyURL(URL(), httpsProxy);
    8486        if (httpsProxyURL.isValid()) {
     87#if !ENABLE(MINIMAL_SIMULATOR)
    8588            [proxySettings setObject:nsStringFromWebCoreString(httpsProxyURL.host()) forKey:(NSString *)kCFNetworkProxiesHTTPSProxy];
    8689            if (httpsProxyURL.port()) {
    … …  
    8891                [proxySettings setObject:port forKey:(NSString *)kCFNetworkProxiesHTTPSPort];
    8992            }
     93#endif
    9094        } else
    9195            NSLog(@"Malformed HTTPS Proxy URL '%s'.  Expected 'https://<hostname>[:<port>]'\n", httpsProxy.utf8().data());
  • trunk/Source/WebKit/Shared/ios/ChildProcessIOS.mm

    r229956 r230778  
    2626#import "config.h"
    2727
    28 #if PLATFORM(IOS)
     28#if PLATFORM(IOS) && !ENABLE(MINIMAL_SIMULATOR)
    2929
    3030#import "ChildProcess.h"
    … …  
    7171    }
    7272
     73#if !ENABLE(MINIMAL_SIMULATOR)
    7374    String sandboxImportPath = "/usr/local/share/sandbox/imports";
    7475    sandboxParameters.addPathParameter("IMPORT_DIR", FileSystem::fileSystemRepresentation(sandboxImportPath).data());
     76#endif
    7577
    7678    switch (sandboxParameters.mode()) {
  • trunk/Source/WebKit/Shared/mac/ChildProcessMac.mm

    r230633 r230778  
    2626#import "config.h"
    2727
    28 #if PLATFORM(MAC)
     28#if PLATFORM(MAC) || ENABLE(MINIMAL_SIMULATOR)
    2929#import "ChildProcess.h"
    3030
    … …  
    3232#import "QuarantineSPI.h"
    3333#import "SandboxInitializationParameters.h"
     34#import "XPCServiceEntryPoint.h"
    3435#import <WebCore/FileSystem.h>
    3536#import <WebCore/SystemVersion.h>
    … …  
    6667void ChildProcess::setApplicationIsDaemon()
    6768{
     69#if !ENABLE(MINIMAL_SIMULATOR)
    6870    OSStatus error = SetApplicationIsDaemon(true);
    6971    ASSERT_UNUSED(error, error == noErr);
     72#endif
    7073
    7174    launchServicesCheckIn();
    … …  
    8689static OSStatus enableSandboxStyleFileQuarantine()
    8790{
     91#if !ENABLE(MINIMAL_SIMULATOR)
    8892    int error;
    8993    qtn_proc_t quarantineProperties = qtn_proc_alloc();
    … …  
    101105    // In that case, quarantine falls back to advisory QTN_FLAG_DOWNLOAD.
    102106    return qtn_proc_apply_to_self(quarantineProperties);
     107#else
     108    return false;
     109#endif
    103110}
    104111
    … …  
    171178            CString profilePath = FileSystem::fileSystemRepresentation(sandboxProfilePath);
    172179            char* errorBuf;
     180#pragma clang diagnostic push
     181#pragma clang diagnostic ignored "-Wdeprecated-declarations"
    173182            if (sandbox_init_with_parameters(profilePath.data(), SANDBOX_NAMED_EXTERNAL, sandboxParameters.namedParameterArray(), &errorBuf)) {
     183#pragma clang diagnostic pop
    174184                WTFLogAlways("%s: Couldn't initialize sandbox profile [%s], error '%s'\n", getprogname(), profilePath.data(), errorBuf);
    175185                for (size_t i = 0, count = sandboxParameters.count(); i != count; ++i)
    … …  
    183193    case SandboxInitializationParameters::UseSandboxProfile: {
    184194        char* errorBuf;
     195#pragma clang diagnostic push
     196#pragma clang diagnostic ignored "-Wdeprecated-declarations"
    185197        if (sandbox_init_with_parameters(sandboxParameters.sandboxProfile().utf8().data(), 0, sandboxParameters.namedParameterArray(), &errorBuf)) {
     198#pragma clang diagnostic pop
    186199            WTFLogAlways("%s: Couldn't initialize sandbox profile, error '%s'\n", getprogname(), errorBuf);
    187200            for (size_t i = 0, count = sandboxParameters.count(); i != count; ++i)
    … …  
    213226#endif
    214227
    215 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400
     228#if !ENABLE(MINIMAL_SIMULATOR) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400
    216229void ChildProcess::stopNSRunLoop()
    217230{
    … …  
    223236#endif
    224237
     238#if ENABLE(MINIMAL_SIMULATOR)
     239void ChildProcess::platformStopRunLoop()
     240{
     241    XPCServiceExit(WTFMove(m_priorityBoostMessage));
     242}
     243#endif
     244
    225245void ChildProcess::setQOS(int latencyQOS, int throughputQOS)
    226246{
  • trunk/Source/WebKit/Shared/mac/CodeSigning.mm

    r227550 r230778  
    2727#include "CodeSigning.h"
    2828
    29 #if PLATFORM(MAC)
     29#if PLATFORM(MAC) || ENABLE(MINIMAL_SIMULATOR)
    3030
    3131#include <wtf/RetainPtr.h>
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r230640 r230778  
    1023610236                                "$(SRCROOT)/Configurations/Network-iOS.entitlements",
    1023710237                                "$(SRCROOT)/Configurations/WebContent-iOS.entitlements",
     10238                                "$(SRCROOT)/Configurations/Network-iOS-minimalsimulator.entitlements",
     10239                                "$(SRCROOT)/Configurations/WebContent-iOS-minimalsimulator.entitlements",
    1023810240                        );
    1023910241                        name = "Derive Entitlements for Manual Sandboxing";
    … …  
    1024210244                                "$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/Network-iOS-no-sandbox.entitlements",
    1024310245                                "$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebContent-iOS-no-sandbox.entitlements",
     10246                                "$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/Network-iOS-minimalsimulator-no-sandbox.entitlements",
     10247                                "$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebContent-iOS-minimalsimulator-no-sandbox.entitlements",
    1024410248                        );
    1024510249                        runOnlyForDeploymentPostprocessing = 0;
    … …  
    1027710281                        runOnlyForDeploymentPostprocessing = 0;
    1027810282                        shellPath = /bin/sh;
    10279                         shellScript = "if [[ \"${WK_MANUAL_SANDBOXING_ENABLED}\" != \"YES\" || \"${WK_PLATFORM_NAME}\" == \"macosx\" ]]; then\n    exit\nfi\n\nif [[ \"${ACTION}\" == \"build\" || \"${ACTION}\" == \"install\" ]]; then\n    for ((i = 0; i < ${SCRIPT_INPUT_FILE_COUNT}; ++i)); do\n        eval SANDBOX_PROFILE=\\${SCRIPT_INPUT_FILE_${i}}\n        ditto \"${SANDBOX_PROFILE}\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/${SANDBOX_PROFILE##*/}\"\n    done\nfi";
     10283                        shellScript = "if [[ \"${WK_MANUAL_SANDBOXING_ENABLED}\" != \"YES\" || \"${WK_PLATFORM_NAME}\" == \"macosx\" || \"${WK_PLATFORM_NAME}\" == \"iphoneminimalsimulator\" ]]; then\n    exit\nfi\n\nif [[ \"${ACTION}\" == \"build\" || \"${ACTION}\" == \"install\" ]]; then\n    for ((i = 0; i < ${SCRIPT_INPUT_FILE_COUNT}; ++i)); do\n        eval SANDBOX_PROFILE=\\${SCRIPT_INPUT_FILE_${i}}\n        ditto \"${SANDBOX_PROFILE}\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/${SANDBOX_PROFILE##*/}\"\n    done\nfi\n";
    1028010284                };
    1028110285                5DF408C5131DD46700130071 /* Check For Weak VTables and Externals */ = {
  • trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm

    r230714 r230778  
    344344    NSBundle *webKit2Bundle = [NSBundle bundleForClass:NSClassFromString(@"WKView")];
    345345#endif
    346 #if PLATFORM(IOS)
     346#if PLATFORM(IOS) && !ENABLE(MINIMAL_SIMULATOR)
    347347    sandboxParameters.setOverrideSandboxProfilePath([webKit2Bundle pathForResource:@"com.apple.WebKit.WebContent" ofType:@"sb"]);
    348348#else
Note: See TracChangeset for help on using the changeset viewer.