Skip to content

Commit 9dce1c5

Browse files
committed
Fix use-after-free of HostResolver
Create one HostResolver per profile to avoid use-after-free in NetworkHintsMessageFilter (5.12) or NetworkContext (5.13). Fixes: QTBUG-75884 Change-Id: Ic1a2973b4fb0aed6bd0fa1bb9a1d7c3012c30fe0 Reviewed-by: Allan Sandfeld Jensen <[email protected]>
1 parent 76a66c8 commit 9dce1c5

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

src/core/profile_io_data_qt.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,11 @@ content::ResourceContext *ProfileIODataQt::resourceContext()
200200
void ProfileIODataQt::initializeOnIOThread()
201201
{
202202
m_networkDelegate.reset(new NetworkDelegateQt(this));
203+
m_hostResolver = net::HostResolver::CreateDefaultResolver(NULL);
203204
m_urlRequestContext.reset(new net::URLRequestContext());
204205
m_urlRequestContext->set_network_delegate(m_networkDelegate.get());
205206
m_urlRequestContext->set_enable_brotli(base::FeatureList::IsEnabled(features::kBrotliEncoding));
207+
m_urlRequestContext->set_host_resolver(m_hostResolver.get());
206208
// this binds factory to io thread
207209
m_weakPtr = m_weakPtrFactory.GetWeakPtr();
208210
QMutexLocker lock(&m_mutex);
@@ -289,7 +291,6 @@ void ProfileIODataQt::generateStorage()
289291
ct_verifier->AddLogs(ct_logs);
290292
m_storage->set_cert_transparency_verifier(std::move(ct_verifier));
291293
m_storage->set_ct_policy_enforcer(base::WrapUnique(new net::DefaultCTPolicyEnforcer()));
292-
m_storage->set_host_resolver(net::HostResolver::CreateDefaultResolver(NULL));
293294
m_storage->set_ssl_config_service(std::make_unique<net::SSLConfigServiceDefaults>());
294295
if (!m_httpAuthPreferences) {
295296
m_httpAuthPreferences.reset(new net::HttpAuthPreferences());

src/core/profile_io_data_qt.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ class ProfileIODataQt {
120120
std::unique_ptr<net::HttpAuthPreferences> m_httpAuthPreferences;
121121
std::unique_ptr<net::URLRequestJobFactory> m_jobFactory;
122122
std::unique_ptr<net::TransportSecurityPersister> m_transportSecurityPersister;
123+
std::unique_ptr<net::HostResolver> m_hostResolver;
123124
base::WeakPtr<ProfileIODataQt> m_weakPtr;
124125
scoped_refptr<CookieMonsterDelegateQt> m_cookieDelegate;
125126
content::URLRequestInterceptorScopedVector m_requestInterceptors;

0 commit comments

Comments
 (0)