Changeset 203856 in webkit


Ignore:
Timestamp:
Jul 28, 2016 10:16:01 PM (8 years ago)
Author:
Carlos Garcia Campos
Message:

Database Process: ASSERTION FAILED: paths.size() == handles.size() with SANDBOX_EXTENSIONS disabled
https://bugs.webkit.org/show_bug.cgi?id=160188

Reviewed by Sergio Villar Senin.

This happens in ports with sandbox extensions disabled, and it's making several tests to crash in debug
builds. The SandboxExtension implementation is empty in case of building with sandbox extensions disabled, so
that we are actually allocating no extensions at all in
NetworkProcessProxy::grantSandboxExtensionsToDatabaseProcessForBlobs(). When the message arrives to database
process, we have a list of paths, but an empty list of hanldes which causes the assertion. We can just avoid
that message entirely in case of building without sandbox extensions.

  • DatabaseProcess/DatabaseProcess.cpp:
  • DatabaseProcess/DatabaseProcess.h:
  • DatabaseProcess/DatabaseProcess.messages.in:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::grantSandboxExtensionsToDatabaseProcessForBlobs):

Location:
trunk/Source/WebKit2
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r203855 r203856  
     12016-07-28  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        Database Process: ASSERTION FAILED: paths.size() == handles.size() with SANDBOX_EXTENSIONS disabled
     4        https://bugs.webkit.org/show_bug.cgi?id=160188
     5
     6        Reviewed by Sergio Villar Senin.
     7
     8        This happens in ports with sandbox extensions disabled, and it's making several tests to crash in debug
     9        builds. The SandboxExtension implementation is empty in case of building with sandbox extensions disabled, so
     10        that we are actually allocating no extensions at all in
     11        NetworkProcessProxy::grantSandboxExtensionsToDatabaseProcessForBlobs(). When the message arrives to database
     12        process, we have a list of paths, but an empty list of hanldes which causes the assertion. We can just avoid
     13        that message entirely in case of building without sandbox extensions.
     14
     15        * DatabaseProcess/DatabaseProcess.cpp:
     16        * DatabaseProcess/DatabaseProcess.h:
     17        * DatabaseProcess/DatabaseProcess.messages.in:
     18        * UIProcess/Network/NetworkProcessProxy.cpp:
     19        (WebKit::NetworkProcessProxy::grantSandboxExtensionsToDatabaseProcessForBlobs):
     20
    1212016-07-28  Myles C. Maxfield  <mmaxfield@apple.com>
    222
  • trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp

    r202414 r203856  
    239239}
    240240
     241#if ENABLE(SANDBOX_EXTENSIONS)
    241242void DatabaseProcess::grantSandboxExtensionsForBlobs(const Vector<String>& paths, const SandboxExtension::HandleArray& handles)
    242243{
     
    248249    }
    249250}
     251#endif
    250252
    251253#if ENABLE(INDEXED_DATABASE)
  • trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.h

    r202414 r203856  
    104104    void deleteWebsiteData(WebCore::SessionID, OptionSet<WebsiteDataType> websiteDataTypes, std::chrono::system_clock::time_point modifiedSince, uint64_t callbackID);
    105105    void deleteWebsiteDataForOrigins(WebCore::SessionID, OptionSet<WebsiteDataType> websiteDataTypes, const Vector<WebCore::SecurityOriginData>& origins, uint64_t callbackID);
     106#if ENABLE(SANDBOX_EXTENSIONS)
    106107    void grantSandboxExtensionsForBlobs(const Vector<String>& paths, const SandboxExtension::HandleArray&);
     108#endif
    107109
    108110    void didGetSandboxExtensionsForBlobFiles(uint64_t requestID, SandboxExtension::HandleArray&&);
  • trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.messages.in

    r199708 r203856  
    3333    DeleteWebsiteData(WebCore::SessionID sessionID, OptionSet<WebKit::WebsiteDataType> websiteDataTypes, std::chrono::system_clock::time_point modifiedSince, uint64_t callbackID)
    3434    DeleteWebsiteDataForOrigins(WebCore::SessionID sessionID, OptionSet<WebKit::WebsiteDataType> websiteDataTypes, Vector<WebCore::SecurityOriginData> origins, uint64_t callbackID)
     35#if ENABLE(SANDBOX_EXTENSIONS)
    3536    GrantSandboxExtensionsForBlobs(Vector<String> paths, WebKit::SandboxExtension::HandleArray extensions)
     37#endif
    3638
    3739    DidGetSandboxExtensionsForBlobFiles(uint64_t requestID, WebKit::SandboxExtension::HandleArray extensions)
  • trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp

    r202575 r203856  
    281281{
    282282#if ENABLE(DATABASE_PROCESS)
     283#if ENABLE(SANDBOX_EXTENSIONS)
    283284    SandboxExtension::HandleArray extensions;
    284285    extensions.allocate(paths.size());
     
    289290
    290291    m_processPool.sendToDatabaseProcessRelaunchingIfNecessary(Messages::DatabaseProcess::GrantSandboxExtensionsForBlobs(paths, extensions));
     292#endif
    291293    connection()->send(Messages::NetworkProcess::DidGrantSandboxExtensionsToDatabaseProcessForBlobs(requestID), 0);
    292294#endif
Note: See TracChangeset for help on using the changeset viewer.