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

Changeset 267498 in webkit


Ignore:
Timestamp:
Sep 23, 2020, 12:52:03 PM (6 years ago)
Author:
pvollan@apple.com
Message:

[macOS] Issue sandbox extension for the diagnostic daemon
https://bugs.webkit.org/show_bug.cgi?id=216834
<rdar://problem/58496834>

Reviewed by Brent Fulgham.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::isInternalInstall):
(WebKit::agxCompilerClasses):
(WebKit::diagnosticServices):
(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

  • WebProcess/com.apple.WebProcess.sb.in:
Location:
trunk/Source/WebKit
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r267497 r267498  
     12020-09-23  Per Arne Vollan  <pvollan@apple.com>
     2
     3        [macOS] Issue sandbox extension for the diagnostic daemon
     4        https://bugs.webkit.org/show_bug.cgi?id=216834
     5        <rdar://problem/58496834>
     6
     7        Reviewed by Brent Fulgham.
     8
     9        * Shared/WebProcessCreationParameters.cpp:
     10        (WebKit::WebProcessCreationParameters::encode const):
     11        (WebKit::WebProcessCreationParameters::decode):
     12        * Shared/WebProcessCreationParameters.h:
     13        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
     14        (WebKit::isInternalInstall):
     15        (WebKit::agxCompilerClasses):
     16        (WebKit::diagnosticServices):
     17        (WebKit::WebProcessPool::platformInitializeWebProcess):
     18        * WebProcess/cocoa/WebProcessCocoa.mm:
     19        (WebKit::WebProcess::platformInitializeWebProcess):
     20        * WebProcess/com.apple.WebProcess.sb.in:
     21
    1222020-09-23  Fujii Hironori  <Hironori.Fujii@sony.com>
    223
  • trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp

    r266802 r267498  
    163163    encoder << mobileGestaltExtensionHandle;
    164164
     165    encoder << diagnosticsExtensionHandles;
    165166#if PLATFORM(IOS_FAMILY)
    166     encoder << diagnosticsExtensionHandles;
    167167    encoder << dynamicMachExtensionHandles;
    168168    encoder << dynamicIOKitExtensionHandles;
     
    439439    parameters.mobileGestaltExtensionHandle = WTFMove(*mobileGestaltExtensionHandle);
    440440
    441 #if PLATFORM(IOS_FAMILY)
    442441    Optional<SandboxExtension::HandleArray> diagnosticsExtensionHandles;
    443442    decoder >> diagnosticsExtensionHandles;
     
    446445    parameters.diagnosticsExtensionHandles = WTFMove(*diagnosticsExtensionHandles);
    447446
     447#if PLATFORM(IOS_FAMILY)
    448448    Optional<SandboxExtension::HandleArray> dynamicMachExtensionHandles;
    449449    decoder >> dynamicMachExtensionHandles;
  • trunk/Source/WebKit/Shared/WebProcessCreationParameters.h

    r266802 r267498  
    207207    Optional<SandboxExtension::Handle> mobileGestaltExtensionHandle;
    208208
    209 #if PLATFORM(IOS_FAMILY)
    210209    SandboxExtension::HandleArray diagnosticsExtensionHandles;
     210#if PLATFORM(IOS_FAMILY)
    211211    SandboxExtension::HandleArray dynamicMachExtensionHandles;
    212212    SandboxExtension::HandleArray dynamicIOKitExtensionHandles;
  • trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm

    r267090 r267498  
    202202}
    203203
    204 #if PLATFORM(IOS_FAMILY)
    205204static bool isInternalInstall()
    206205{
     206#if PLATFORM(IOS_FAMILY)
    207207    static bool isInternal = MGGetBoolAnswer(kMGQAppleInternalInstallCapability);
     208#else
     209    static bool isInternal = FileSystem::fileIsDirectory("/AppleInternal", FileSystem::ShouldFollowSymbolicLinks::No);
     210#endif
    208211    return isInternal;
    209212}
    210 #endif
    211213
    212214// FIXME(207716): The following should be removed when the GPU process is complete.
     
    261263}
    262264
    263 static const Vector<ASCIILiteral>& diagnosticServices()
    264 {
    265     ASSERT(isMainThread());
    266     static const auto services = makeNeverDestroyed(Vector<ASCIILiteral> {
    267         "com.apple.diagnosticd"_s,
    268         "com.apple.osanalytics.osanalyticshelper"_s
    269     });
    270     return services;
    271 }
    272 
    273265static const Vector<ASCIILiteral>& agxCompilerClasses()
    274266{
     
    288280    return iokitClasses;
    289281}
    290 
    291282#endif
    292283
     
    302293}
    303294#endif
     295
     296static const Vector<ASCIILiteral>& diagnosticServices()
     297{
     298    ASSERT(isMainThread());
     299    static const auto services = makeNeverDestroyed(Vector<ASCIILiteral> {
     300        "com.apple.diagnosticd"_s,
     301#if PLATFORM(IOS_FAMILY)
     302        "com.apple.osanalytics.osanalyticshelper"_s
     303#endif
     304    });
     305    return services;
     306}
     307
    304308
    305309static bool requiresContainerManagerAccess()
     
    422426    if (!WebCore::IOSApplication::isMobileSafari())
    423427        parameters.dynamicMachExtensionHandles = SandboxExtension::createHandlesForMachLookup(nonBrowserServices(), WTF::nullopt);
    424    
     428
     429    if (WebCore::deviceHasAGXCompilerService())
     430        parameters.dynamicIOKitExtensionHandles = SandboxExtension::createHandlesForIOKitClassExtensions(agxCompilerClasses(), WTF::nullopt);
     431#endif
     432
    425433    if (isInternalInstall())
    426434        parameters.diagnosticsExtensionHandles = SandboxExtension::createHandlesForMachLookup(diagnosticServices(), WTF::nullopt, SandboxExtension::Flags::NoReport);
    427435
    428     if (WebCore::deviceHasAGXCompilerService())
    429         parameters.dynamicIOKitExtensionHandles = SandboxExtension::createHandlesForIOKitClassExtensions(agxCompilerClasses(), WTF::nullopt);
    430 #endif
    431    
    432 #if PLATFORM(COCOA)
    433436    parameters.systemHasBattery = systemHasBattery();
    434437    parameters.systemHasAC = cachedSystemHasAC().valueOr(true);
    435 #endif
    436438
    437439    if (requiresContainerManagerAccess()) {
  • trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm

    r266932 r267498  
    312312        SandboxExtension::consumePermanently(*parameters.containerManagerExtensionHandle);
    313313   
     314    SandboxExtension::consumePermanently(parameters.diagnosticsExtensionHandles);
    314315#if PLATFORM(IOS_FAMILY)
    315     SandboxExtension::consumePermanently(parameters.diagnosticsExtensionHandles);
    316316    SandboxExtension::consumePermanently(parameters.dynamicMachExtensionHandles);
    317317    SandboxExtension::consumePermanently(parameters.dynamicIOKitExtensionHandles);
  • trunk/Source/WebKit/WebProcess/com.apple.WebProcess.sb.in

    r267490 r267498  
    10011001            "com.apple.cfprefsd.daemon"
    10021002            "com.apple.containermanagerd"
     1003            "com.apple.diagnosticd"
    10031004            "com.apple.tccd"
    10041005            "com.apple.BluetoothServices"
Note: See TracChangeset for help on using the changeset viewer.