Changeset 172500 in webkit


Ignore:
Timestamp:
Aug 12, 2014 3:43:27 PM (10 years ago)
Author:
ap@apple.com
Message:

REGRESSION: WebContent process has a sandbox extension for the entirety of user's temp directory
https://bugs.webkit.org/show_bug.cgi?id=135853
<rdar://problem/17986556>

Reviewed by Oliver hunt.

Move extensions recently added for iOS benefit under PLATFORM(IOS). Removed some
dead code while at it (child processes don't need actual paths, they only need
sandbox extensions in most cases).

  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

  • Shared/Network/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode):
(WebKit::NetworkProcessCreationParameters::decode):

  • Shared/Network/NetworkProcessCreationParameters.h:
  • Shared/WebProcessCreationParameters.cpp:

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

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/WebContext.cpp:

(WebKit::WebContext::ensureNetworkProcess):
(WebKit::WebContext::createNewWebProcess):
(WebKit::WebContext::openGLCacheDirectory): Deleted.
(WebKit::WebContext::networkingHSTSDatabasePath): Deleted.

  • UIProcess/WebContext.h:
  • UIProcess/efl/WebContextEfl.cpp:

(WebKit::WebContext::containerTemporaryDirectory): Deleted.
(WebKit::WebContext::platformDefaultNetworkingHSTSDatabasePath): Deleted.

  • UIProcess/gtk/WebContextGtk.cpp:

(WebKit::WebContext::containerTemporaryDirectory): Deleted.
(WebKit::WebContext::platformDefaultNetworkingHSTSDatabasePath): Deleted.

  • UIProcess/mac/WebContextMac.mm:

(WebKit::WebContext::openGLCacheDirectory):
(WebKit::WebContext::parentBundleDirectory):
(WebKit::WebContext::networkingHSTSDatabasePath):
(WebKit::WebContext::platformDefaultOpenGLCacheDirectory): Deleted.
(WebKit::WebContext::platformDefaultNetworkingHSTSDatabasePath): Deleted.

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

Location:
trunk/Source/WebKit2
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r172498 r172500  
     12014-08-12  Alexey Proskuryakov  <ap@apple.com>
     2
     3        REGRESSION: WebContent process has a sandbox extension for the entirety of user's temp directory
     4        https://bugs.webkit.org/show_bug.cgi?id=135853
     5        <rdar://problem/17986556>
     6
     7        Reviewed by Oliver hunt.
     8
     9        Move extensions recently added for iOS benefit under PLATFORM(IOS). Removed some
     10        dead code while at it (child processes don't need actual paths, they only need
     11        sandbox extensions in most cases).
     12
     13        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
     14        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
     15        * Shared/Network/NetworkProcessCreationParameters.cpp:
     16        (WebKit::NetworkProcessCreationParameters::encode):
     17        (WebKit::NetworkProcessCreationParameters::decode):
     18        * Shared/Network/NetworkProcessCreationParameters.h:
     19        * Shared/WebProcessCreationParameters.cpp:
     20        (WebKit::WebProcessCreationParameters::encode):
     21        (WebKit::WebProcessCreationParameters::decode):
     22        * Shared/WebProcessCreationParameters.h:
     23        * UIProcess/WebContext.cpp:
     24        (WebKit::WebContext::ensureNetworkProcess):
     25        (WebKit::WebContext::createNewWebProcess):
     26        (WebKit::WebContext::openGLCacheDirectory): Deleted.
     27        (WebKit::WebContext::networkingHSTSDatabasePath): Deleted.
     28        * UIProcess/WebContext.h:
     29        * UIProcess/efl/WebContextEfl.cpp:
     30        (WebKit::WebContext::containerTemporaryDirectory): Deleted.
     31        (WebKit::WebContext::platformDefaultNetworkingHSTSDatabasePath): Deleted.
     32        * UIProcess/gtk/WebContextGtk.cpp:
     33        (WebKit::WebContext::containerTemporaryDirectory): Deleted.
     34        (WebKit::WebContext::platformDefaultNetworkingHSTSDatabasePath): Deleted.
     35        * UIProcess/mac/WebContextMac.mm:
     36        (WebKit::WebContext::openGLCacheDirectory):
     37        (WebKit::WebContext::parentBundleDirectory):
     38        (WebKit::WebContext::networkingHSTSDatabasePath):
     39        (WebKit::WebContext::platformDefaultOpenGLCacheDirectory): Deleted.
     40        (WebKit::WebContext::platformDefaultNetworkingHSTSDatabasePath): Deleted.
     41        * WebProcess/cocoa/WebProcessCocoa.mm:
     42        (WebKit::WebProcess::platformInitializeWebProcess):
     43
    1442014-08-12  Tim Horton  <timothy_horton@apple.com>
    245
  • trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkProcessCocoa.mm

    r172031 r172500  
    6161void NetworkProcess::platformInitializeNetworkProcessCocoa(const NetworkProcessCreationParameters& parameters)
    6262{
     63#if PLATFORM(IOS)
    6364    SandboxExtension::consumePermanently(parameters.cookieStorageDirectoryExtensionHandle);
    64 #if PLATFORM(IOS)
    6565    SandboxExtension::consumePermanently(parameters.hstsDatabasePathExtensionHandle);
    6666    SandboxExtension::consumePermanently(parameters.parentBundleDirectoryExtensionHandle);
  • trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp

    r172031 r172500  
    4444    encoder << diskCacheDirectoryExtensionHandle;
    4545    encoder << cookieStorageDirectory;
     46#if PLATFORM(IOS)
    4647    encoder << cookieStorageDirectoryExtensionHandle;
    47 #if PLATFORM(IOS)
    48     encoder << hstsDatabasePath;
    4948    encoder << hstsDatabasePathExtensionHandle;
    50     encoder << parentBundleDirectory;
    5149    encoder << parentBundleDirectoryExtensionHandle;
    5250#endif
     
    8482    if (!decoder.decode(result.cookieStorageDirectory))
    8583        return false;
     84#if PLATFORM(IOS)
    8685    if (!decoder.decode(result.cookieStorageDirectoryExtensionHandle))
    8786        return false;
    88 #if PLATFORM(IOS)
    89     if (!decoder.decode(result.hstsDatabasePath))
    90         return false;
    9187    if (!decoder.decode(result.hstsDatabasePathExtensionHandle))
    92         return false;
    93     if (!decoder.decode(result.parentBundleDirectory))
    9488        return false;
    9589    if (!decoder.decode(result.parentBundleDirectoryExtensionHandle))
  • trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h

    r172031 r172500  
    5858
    5959    String cookieStorageDirectory;
     60
     61#if PLATFORM(IOS)
    6062    SandboxExtension::Handle cookieStorageDirectoryExtensionHandle;
    6163
    62 #if PLATFORM(IOS)
    6364    // FIXME: Remove this once <rdar://problem/17726660> is fixed.
    64     String hstsDatabasePath;
    6565    SandboxExtension::Handle hstsDatabasePathExtensionHandle;
    6666
    67     String parentBundleDirectory;
    6867    SandboxExtension::Handle parentBundleDirectoryExtensionHandle;
    6968#endif
  • trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp

    r172301 r172500  
    6868    encoder << diskCacheDirectoryExtensionHandle;
    6969    encoder << cookieStorageDirectory;
     70#if PLATFORM(IOS)
    7071    encoder << cookieStorageDirectoryExtensionHandle;
    71     encoder << openGLCacheDirectory;
    7272    encoder << openGLCacheDirectoryExtensionHandle;
    73     encoder << containerTemporaryDirectory;
    7473    encoder << containerTemporaryDirectoryExtensionHandle;
    75 #if PLATFORM(IOS)
    76     encoder << hstsDatabasePath;
    7774    encoder << hstsDatabasePathExtensionHandle;
    7875#endif
     
    168165    if (!decoder.decode(parameters.cookieStorageDirectory))
    169166        return false;
     167#if PLATFORM(IOS)
    170168    if (!decoder.decode(parameters.cookieStorageDirectoryExtensionHandle))
    171169        return false;
    172     if (!decoder.decode(parameters.openGLCacheDirectory))
    173         return false;
    174170    if (!decoder.decode(parameters.openGLCacheDirectoryExtensionHandle))
    175171        return false;
    176     if (!decoder.decode(parameters.containerTemporaryDirectory))
    177         return false;
    178172    if (!decoder.decode(parameters.containerTemporaryDirectoryExtensionHandle))
    179         return false;
    180 #if PLATFORM(IOS)
    181     if (!decoder.decode(parameters.hstsDatabasePath))
    182173        return false;
    183174    if (!decoder.decode(parameters.hstsDatabasePathExtensionHandle))
  • trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h

    r172301 r172500  
    7272    SandboxExtension::Handle diskCacheDirectoryExtensionHandle;
    7373    String cookieStorageDirectory;
     74#if PLATFORM(IOS)
    7475    SandboxExtension::Handle cookieStorageDirectoryExtensionHandle;
    75     String openGLCacheDirectory;
    7676    SandboxExtension::Handle openGLCacheDirectoryExtensionHandle;
    77     String containerTemporaryDirectory;
    7877    SandboxExtension::Handle containerTemporaryDirectoryExtensionHandle;
    79 
    80 #if PLATFORM(IOS)
    8178    // FIXME: Remove this once <rdar://problem/17726660> is fixed.
    82     String hstsDatabasePath;
    8379    SandboxExtension::Handle hstsDatabasePathExtensionHandle;
    8480#endif
  • trunk/Source/WebKit2/UIProcess/WebContext.cpp

    r172366 r172500  
    422422
    423423    parameters.cookieStorageDirectory = cookieStorageDirectory();
     424
     425#if PLATFORM(IOS)
    424426    if (!parameters.cookieStorageDirectory.isEmpty())
    425427        SandboxExtension::createHandleForReadWriteDirectory(parameters.cookieStorageDirectory, parameters.cookieStorageDirectoryExtensionHandle);
    426428
    427 #if PLATFORM(IOS)
    428     parameters.hstsDatabasePath = networkingHSTSDatabasePath();
    429     if (!parameters.hstsDatabasePath.isEmpty())
    430         SandboxExtension::createHandle(parameters.hstsDatabasePath, SandboxExtension::ReadWrite, parameters.hstsDatabasePathExtensionHandle);
    431 
    432     parameters.parentBundleDirectory = parentBundleDirectory();
    433     if (!parameters.parentBundleDirectory.isEmpty())
    434         SandboxExtension::createHandle(parameters.parentBundleDirectory, SandboxExtension::ReadOnly, parameters.parentBundleDirectoryExtensionHandle);
     429    String hstsDatabasePath = networkingHSTSDatabasePath();
     430    if (!hstsDatabasePath.isEmpty())
     431        SandboxExtension::createHandle(hstsDatabasePath, SandboxExtension::ReadWrite, parameters.hstsDatabasePathExtensionHandle);
     432
     433    String parentBundleDirectory = parentBundleDirectory();
     434    if (!parentBundleDirectory.isEmpty())
     435        SandboxExtension::createHandle(parentBundleDirectory, SandboxExtension::ReadOnly, parameters.parentBundleDirectoryExtensionHandle);
    435436#endif
    436437
     
    619620
    620621    parameters.cookieStorageDirectory = cookieStorageDirectory();
     622
     623#if PLATFORM(IOS)
    621624    if (!parameters.cookieStorageDirectory.isEmpty())
    622625        SandboxExtension::createHandleForReadWriteDirectory(parameters.cookieStorageDirectory, parameters.cookieStorageDirectoryExtensionHandle);
    623626
    624     parameters.openGLCacheDirectory = openGLCacheDirectory();
    625     if (!parameters.openGLCacheDirectory.isEmpty())
    626         SandboxExtension::createHandleForReadWriteDirectory(parameters.openGLCacheDirectory, parameters.openGLCacheDirectoryExtensionHandle);
    627 
    628     parameters.containerTemporaryDirectory = containerTemporaryDirectory();
    629     if (!parameters.containerTemporaryDirectory.isEmpty())
    630         SandboxExtension::createHandleForReadWriteDirectory(parameters.containerTemporaryDirectory, parameters.containerTemporaryDirectoryExtensionHandle);
    631 
    632 #if PLATFORM(IOS)
    633     parameters.hstsDatabasePath = webContentHSTSDatabasePath();
    634     if (!parameters.hstsDatabasePath.isEmpty())
    635         SandboxExtension::createHandle(parameters.hstsDatabasePath, SandboxExtension::ReadWrite, parameters.hstsDatabasePathExtensionHandle);
     627    String openGLCacheDirectory = openGLCacheDirectory();
     628    if (!openGLCacheDirectory.isEmpty())
     629        SandboxExtension::createHandleForReadWriteDirectory(openGLCacheDirectory, parameters.openGLCacheDirectoryExtensionHandle);
     630
     631    String containerTemporaryDirectory = containerTemporaryDirectory();
     632    if (!containerTemporaryDirectory.isEmpty())
     633        SandboxExtension::createHandleForReadWriteDirectory(containerTemporaryDirectory, parameters.containerTemporaryDirectoryExtensionHandle);
     634
     635    String hstsDatabasePath = webContentHSTSDatabasePath();
     636    if (!hstsDatabasePath.isEmpty())
     637        SandboxExtension::createHandle(hstsDatabasePath, SandboxExtension::ReadWrite, parameters.hstsDatabasePathExtensionHandle);
    636638#endif
    637639
     
    12221224}
    12231225
    1224 String WebContext::openGLCacheDirectory() const
    1225 {
    1226     if (!m_overrideOpenGLCacheDirectory.isEmpty())
    1227         return m_overrideOpenGLCacheDirectory;
    1228 
    1229     return platformDefaultOpenGLCacheDirectory();
    1230 }
    1231 
    1232 String WebContext::networkingHSTSDatabasePath() const
    1233 {
    1234     return platformDefaultNetworkingHSTSDatabasePath();
    1235 }
    1236 
    12371226void WebContext::useTestingNetworkSession()
    12381227{
  • trunk/Source/WebKit2/UIProcess/WebContext.h

    r172366 r172500  
    424424    String platformDefaultCookieStorageDirectory() const;
    425425
     426#if PLATFORM(IOS)
    426427    String openGLCacheDirectory() const;
    427     String platformDefaultOpenGLCacheDirectory() const;
    428 
     428    String parentBundleDirectory() const;
    429429    String networkingHSTSDatabasePath() const;
    430     String platformDefaultNetworkingHSTSDatabasePath() const;
    431 
    432 #if PLATFORM(IOS)
    433     String parentBundleDirectory() const;
    434430    String webContentHSTSDatabasePath() const;
    435 #endif
    436 
    437431    String containerTemporaryDirectory() const;
     432#endif
    438433
    439434#if PLATFORM(COCOA)
     
    532527    String m_overrideDiskCacheDirectory;
    533528    String m_overrideCookieStorageDirectory;
    534     String m_overrideOpenGLCacheDirectory;
    535529
    536530    String m_webSQLDatabaseDirectory;
  • trunk/Source/WebKit2/UIProcess/efl/WebContextEfl.cpp

    r171943 r172500  
    133133}
    134134
    135 String WebContext::platformDefaultOpenGLCacheDirectory() const
    136 {
    137     notImplemented();
    138     return String();
    139 }
    140 
    141 String WebContext::containerTemporaryDirectory() const
    142 {
    143     notImplemented();
    144     return String();
    145 }
    146 
    147 String WebContext::platformDefaultNetworkingHSTSDatabasePath() const
    148 {
    149     notImplemented();
    150     return String();
    151 }
    152 
    153135void WebContext::setIgnoreTLSErrors(bool ignoreTLSErrors)
    154136{
  • trunk/Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp

    r171943 r172500  
    149149}
    150150
    151 String WebContext::platformDefaultOpenGLCacheDirectory() const
    152 {
    153     notImplemented();
    154     return String();
    155 }
    156 
    157 String WebContext::containerTemporaryDirectory() const
    158 {
    159     notImplemented();
    160     return String();
    161 }
    162 
    163 String WebContext::platformDefaultNetworkingHSTSDatabasePath() const
    164 {
    165     notImplemented();
    166     return String();
    167 }
    168 
    169151void WebContext::setIgnoreTLSErrors(bool ignoreTLSErrors)
    170152{
  • trunk/Source/WebKit2/UIProcess/mac/WebContextMac.mm

    r172238 r172500  
    285285}
    286286
    287 String WebContext::platformDefaultOpenGLCacheDirectory() const
    288 {
    289287#if PLATFORM(IOS)
     288String WebContext::openGLCacheDirectory() const
     289{
    290290    String path = pathForProcessContainer();
    291291    if (path.isEmpty())
     
    294294    path = path + "/Library/Caches/com.apple.WebKit.WebContent/com.apple.opengl/";
    295295    return stringByResolvingSymlinksInPath(path);
    296 #else
    297     notImplemented();
    298     return [@"" stringByStandardizingPath];
    299 #endif
    300 }
    301 
    302 String WebContext::platformDefaultNetworkingHSTSDatabasePath() const
    303 {
    304 #if PLATFORM(IOS)
     296}
     297
     298String WebContext::parentBundleDirectory() const
     299{
     300    return [[[NSBundle mainBundle] bundlePath] stringByStandardizingPath];
     301}
     302
     303String WebContext::networkingHSTSDatabasePath() const
     304{
    305305    String path = pathForProcessContainer();
    306306    if (path.isEmpty())
     
    318318
    319319    return path + "/HSTS.plist";
    320 #else
    321     notImplemented();
    322     return [@"" stringByStandardizingPath];
    323 #endif
    324 }
    325 
    326 #if PLATFORM(IOS)
    327 String WebContext::parentBundleDirectory() const
    328 {
    329     return [[[NSBundle mainBundle] bundlePath] stringByStandardizingPath];
    330320}
    331321
     
    349339}
    350340
    351 #endif
    352 
    353341String WebContext::containerTemporaryDirectory() const
    354342{
     
    356344    return stringByResolvingSymlinksInPath(path);
    357345}
     346#endif
    358347
    359348String WebContext::platformDefaultWebSQLDatabaseDirectory()
  • trunk/Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm

    r172238 r172500  
    168168    SandboxExtension::consumePermanently(parameters.applicationCacheDirectoryExtensionHandle);
    169169    SandboxExtension::consumePermanently(parameters.diskCacheDirectoryExtensionHandle);
     170#if PLATFORM(IOS)
    170171    SandboxExtension::consumePermanently(parameters.cookieStorageDirectoryExtensionHandle);
    171172    SandboxExtension::consumePermanently(parameters.openGLCacheDirectoryExtensionHandle);
    172173    SandboxExtension::consumePermanently(parameters.containerTemporaryDirectoryExtensionHandle);
    173 #if PLATFORM(IOS)
    174174    SandboxExtension::consumePermanently(parameters.hstsDatabasePathExtensionHandle);
    175175#endif
Note: See TracChangeset for help on using the changeset viewer.