Skip to content

Commit 1b13eba

Browse files
author
Jialiu Lin
committed
[merge into M66]Fix crash in safe_browsing::IsURLWhitelistedByPolicy
[email protected] (cherry picked from commit d80964d) Bug: 818559 Change-Id: I81db22fded6d75fe74098177fc8eecd4f0ffcbec Reviewed-on: https://chromium-review.googlesource.com/948069 Commit-Queue: Jialiu Lin <[email protected]> Reviewed-by: Scott Violet <[email protected]> Reviewed-by: Varun Khaneja <[email protected]> Cr-Original-Commit-Position: refs/heads/master@{#541076} Reviewed-on: https://chromium-review.googlesource.com/954609 Reviewed-by: Jialiu Lin <[email protected]> Cr-Commit-Position: refs/branch-heads/3359@{#85} Cr-Branched-From: 66afc5e-refs/heads/master@{#540276}
1 parent 1a37f06 commit 1b13eba

File tree

4 files changed

+27
-0
lines changed

4 files changed

+27
-0
lines changed

components/safe_browsing/common/BUILD.gn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ source_set("unit_tests") {
5252
"//base:base",
5353
"//base/test:test_support",
5454
"//components/prefs:test_support",
55+
"//content/test:test_support",
5556
"//testing/gtest",
5657
"//url:url",
5758
]

components/safe_browsing/common/DEPS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
include_rules = [
22
"+components/pref_registry",
33
"+components/prefs",
4+
"+content/public/test",
45
"+crypto/sha2.h",
56
"+ipc",
67
"+url"

components/safe_browsing/common/safe_browsing_prefs.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,8 @@ void CanonicalizeDomainList(
526526
bool IsURLWhitelistedByPolicy(const GURL& url,
527527
StringListPrefMember* pref_member) {
528528
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
529+
if (!pref_member)
530+
return false;
529531
std::vector<std::string> sb_whitelist_domains = pref_member->GetValue();
530532
return std::find_if(sb_whitelist_domains.begin(), sb_whitelist_domains.end(),
531533
[&url](const std::string& domain) {

components/safe_browsing/common/safe_browsing_prefs_unittest.cc

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "components/prefs/pref_registry_simple.h"
1313
#include "components/prefs/testing_pref_service.h"
1414
#include "components/safe_browsing/common/safe_browsing_prefs.h"
15+
#include "content/public/test/test_browser_thread_bundle.h"
1516
#include "testing/gtest/include/gtest/gtest.h"
1617
#include "url/gurl.h"
1718

@@ -35,6 +36,8 @@ class SafeBrowsingPrefsTest : public ::testing::Test {
3536
prefs_.registry()->RegisterListPref(prefs::kPasswordProtectionLoginURLs);
3637
prefs_.registry()->RegisterBooleanPref(
3738
prefs::kSafeBrowsingExtendedReportingOptInAllowed, true);
39+
prefs_.registry()->RegisterListPref(prefs::kSafeBrowsingWhitelistDomains);
40+
3841
ResetExperiments(/*can_show_scout=*/false);
3942
}
4043

@@ -112,6 +115,7 @@ class SafeBrowsingPrefsTest : public ::testing::Test {
112115

113116
private:
114117
std::unique_ptr<base::test::ScopedFeatureList> feature_list_;
118+
content::TestBrowserThreadBundle thread_bundle_;
115119
};
116120

117121
// This test ensures that we correctly select between SBER and Scout as the
@@ -422,4 +426,23 @@ TEST_F(SafeBrowsingPrefsTest, IsExtendedReportingPolicyManaged) {
422426
EXPECT_TRUE(IsExtendedReportingOptInAllowed(prefs_));
423427
}
424428

429+
TEST_F(SafeBrowsingPrefsTest, VerifyIsURLWhitelistedByPolicy) {
430+
GURL target_url("https://www.foo.com");
431+
// When PrefMember is null, URL is not whitelisted.
432+
EXPECT_FALSE(IsURLWhitelistedByPolicy(target_url, nullptr));
433+
434+
EXPECT_FALSE(prefs_.HasPrefPath(prefs::kSafeBrowsingWhitelistDomains));
435+
base::ListValue whitelisted_domains;
436+
whitelisted_domains.AppendString("foo.com");
437+
prefs_.Set(prefs::kSafeBrowsingWhitelistDomains, whitelisted_domains);
438+
StringListPrefMember string_list_pref;
439+
string_list_pref.Init(prefs::kSafeBrowsingWhitelistDomains, &prefs_);
440+
EXPECT_TRUE(IsURLWhitelistedByPolicy(target_url, prefs_));
441+
EXPECT_TRUE(IsURLWhitelistedByPolicy(target_url, &string_list_pref));
442+
443+
GURL not_whitelisted_url("https://www.bar.com");
444+
EXPECT_FALSE(IsURLWhitelistedByPolicy(not_whitelisted_url, prefs_));
445+
EXPECT_FALSE(
446+
IsURLWhitelistedByPolicy(not_whitelisted_url, &string_list_pref));
447+
}
425448
} // namespace safe_browsing

0 commit comments

Comments
 (0)