summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinghui Lu <xinghuilu@chromium.org>2022-02-24 21:23:26 +0000
committerMichael BrĂ¼ning <michael.bruning@qt.io>2022-05-20 14:54:11 +0000
commit92bb62539606a47f0370f0558a267fd9bc7e4e0c (patch)
tree68089f61b602eec3fb3ab80463baa185297df161
parente749ff3b639a693f217de338f6283a0f555f7bfe (diff)
downloadqtwebengine-chromium-92bb62539606a47f0370f0558a267fd9bc7e4e0c.tar.gz
[Backport] Security bug 1296334
Manual cherry-pick of patch originally reviewed on https://chromium-review.googlesource.com/c/chromium/src/+/3483595: Replace RawPtr with WeakPtr when posting task to cache_manager When RealTimeUrlLookupServiceBase post a task to cache a verdict, it uses base::Unretained. This is not safe because when the task is run, the cache manager may no longer be valid. Replace base::Unretained with WeakPtr() to avoid this issue. Bug: 1296334 Change-Id: If4e70951b949d349ab35aa52410f044595ababb6 Reviewed-by: Daniel Rubery <drubery@chromium.org> Commit-Queue: Xinghui Lu <xinghuilu@chromium.org> Cr-Commit-Position: refs/heads/main@{#974832} Reviewed-by: Michal Klocek <michal.klocek@qt.io>
-rw-r--r--chromium/components/safe_browsing/core/realtime/url_lookup_service_base.cc5
1 files changed, 2 insertions, 3 deletions
diff --git a/chromium/components/safe_browsing/core/realtime/url_lookup_service_base.cc b/chromium/components/safe_browsing/core/realtime/url_lookup_service_base.cc
index e035129c97a..226511eb3f8 100644
--- a/chromium/components/safe_browsing/core/realtime/url_lookup_service_base.cc
+++ b/chromium/components/safe_browsing/core/realtime/url_lookup_service_base.cc
@@ -281,9 +281,8 @@ void RealTimeUrlLookupServiceBase::MayBeCacheRealTimeUrlVerdict(
if (response.threat_info_size() > 0) {
base::PostTask(FROM_HERE, CreateTaskTraits(ThreadID::UI),
base::BindOnce(&VerdictCacheManager::CacheRealTimeUrlVerdict,
- base::Unretained(cache_manager_), url,
- response, base::Time::Now(),
- /* store_old_cache */ false));
+ cache_manager_->GetWeakPtr(), url, response,
+ base::Time::Now(), /* store_old_cache */ false));
}
}