diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-01-29 16:35:13 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-02-01 15:33:35 +0000 |
commit | c8c2d1901aec01e934adf561a9fdf0cc776cdef8 (patch) | |
tree | 9157c3d9815e5870799e070b113813bec53e0535 /chromium/net/reporting | |
parent | abefd5095b41dac94ca451d784ab6e27372e981a (diff) | |
download | qtwebengine-chromium-c8c2d1901aec01e934adf561a9fdf0cc776cdef8.tar.gz |
BASELINE: Update Chromium to 64.0.3282.139
Change-Id: I1cae68fe9c94ff7608b26b8382fc19862cdb293a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/net/reporting')
14 files changed, 150 insertions, 34 deletions
diff --git a/chromium/net/reporting/OWNERS b/chromium/net/reporting/OWNERS new file mode 100644 index 00000000000..510eb168acb --- /dev/null +++ b/chromium/net/reporting/OWNERS @@ -0,0 +1 @@ +juliatuttle@chromium.org diff --git a/chromium/net/reporting/reporting_browsing_data_remover_unittest.cc b/chromium/net/reporting/reporting_browsing_data_remover_unittest.cc index 5cb2e0599c0..ceaf9d59d8a 100644 --- a/chromium/net/reporting/reporting_browsing_data_remover_unittest.cc +++ b/chromium/net/reporting/reporting_browsing_data_remover_unittest.cc @@ -57,8 +57,8 @@ class ReportingBrowsingDataRemoverTest : public ReportingTestBase { const GURL kUrl1_ = GURL("https://origin1/path"); const GURL kUrl2_ = GURL("https://origin2/path"); - const url::Origin kOrigin1_ = url::Origin(kUrl1_); - const url::Origin kOrigin2_ = url::Origin(kUrl2_); + const url::Origin kOrigin1_ = url::Origin::Create(kUrl1_); + const url::Origin kOrigin2_ = url::Origin::Create(kUrl2_); const GURL kEndpoint_ = GURL("https://endpoint/"); const std::string kGroup_ = "group"; const std::string kType_ = "default"; diff --git a/chromium/net/reporting/reporting_cache_unittest.cc b/chromium/net/reporting/reporting_cache_unittest.cc index 59bebe627a0..9c77e71b4b0 100644 --- a/chromium/net/reporting/reporting_cache_unittest.cc +++ b/chromium/net/reporting/reporting_cache_unittest.cc @@ -61,8 +61,8 @@ class ReportingCacheTest : public ReportingTestBase { } const GURL kUrl1_ = GURL("https://origin1/path"); - const url::Origin kOrigin1_ = url::Origin(GURL("https://origin1/")); - const url::Origin kOrigin2_ = url::Origin(GURL("https://origin2/")); + const url::Origin kOrigin1_ = url::Origin::Create(GURL("https://origin1/")); + const url::Origin kOrigin2_ = url::Origin::Create(GURL("https://origin2/")); const GURL kEndpoint1_ = GURL("https://endpoint1/"); const GURL kEndpoint2_ = GURL("https://endpoint2/"); const std::string kGroup1_ = "group1"; @@ -315,8 +315,9 @@ TEST_F(ReportingCacheTest, RemoveAllClients) { } TEST_F(ReportingCacheTest, ExcludeSubdomainsDifferentPort) { - const url::Origin kOrigin(GURL("https://example/")); - const url::Origin kDifferentPortOrigin(GURL("https://example:444/")); + const url::Origin kOrigin = url::Origin::Create(GURL("https://example/")); + const url::Origin kDifferentPortOrigin = + url::Origin::Create(GURL("https://example:444/")); cache()->SetClient(kDifferentPortOrigin, kEndpoint1_, ReportingClient::Subdomains::EXCLUDE, kGroup1_, @@ -328,8 +329,9 @@ TEST_F(ReportingCacheTest, ExcludeSubdomainsDifferentPort) { } TEST_F(ReportingCacheTest, ExcludeSubdomainsSuperdomain) { - const url::Origin kOrigin(GURL("https://foo.example/")); - const url::Origin kSuperOrigin(GURL("https://example/")); + const url::Origin kOrigin = url::Origin::Create(GURL("https://foo.example/")); + const url::Origin kSuperOrigin = + url::Origin::Create(GURL("https://example/")); cache()->SetClient(kSuperOrigin, kEndpoint1_, ReportingClient::Subdomains::EXCLUDE, kGroup1_, @@ -341,8 +343,9 @@ TEST_F(ReportingCacheTest, ExcludeSubdomainsSuperdomain) { } TEST_F(ReportingCacheTest, IncludeSubdomainsDifferentPort) { - const url::Origin kOrigin(GURL("https://example/")); - const url::Origin kDifferentPortOrigin(GURL("https://example:444/")); + const url::Origin kOrigin = url::Origin::Create(GURL("https://example/")); + const url::Origin kDifferentPortOrigin = + url::Origin::Create(GURL("https://example:444/")); cache()->SetClient(kDifferentPortOrigin, kEndpoint1_, ReportingClient::Subdomains::INCLUDE, kGroup1_, @@ -355,8 +358,9 @@ TEST_F(ReportingCacheTest, IncludeSubdomainsDifferentPort) { } TEST_F(ReportingCacheTest, IncludeSubdomainsSuperdomain) { - const url::Origin kOrigin(GURL("https://foo.example/")); - const url::Origin kSuperOrigin(GURL("https://example/")); + const url::Origin kOrigin = url::Origin::Create(GURL("https://foo.example/")); + const url::Origin kSuperOrigin = + url::Origin::Create(GURL("https://example/")); cache()->SetClient(kSuperOrigin, kEndpoint1_, ReportingClient::Subdomains::INCLUDE, kGroup1_, @@ -369,8 +373,9 @@ TEST_F(ReportingCacheTest, IncludeSubdomainsSuperdomain) { } TEST_F(ReportingCacheTest, IncludeSubdomainsPreferOriginToDifferentPort) { - const url::Origin kOrigin(GURL("https://foo.example/")); - const url::Origin kDifferentPortOrigin(GURL("https://example:444/")); + const url::Origin kOrigin = url::Origin::Create(GURL("https://foo.example/")); + const url::Origin kDifferentPortOrigin = + url::Origin::Create(GURL("https://example:444/")); cache()->SetClient(kOrigin, kEndpoint1_, ReportingClient::Subdomains::INCLUDE, kGroup1_, kExpires1_); @@ -385,8 +390,9 @@ TEST_F(ReportingCacheTest, IncludeSubdomainsPreferOriginToDifferentPort) { } TEST_F(ReportingCacheTest, IncludeSubdomainsPreferOriginToSuperdomain) { - const url::Origin kOrigin(GURL("https://foo.example/")); - const url::Origin kSuperOrigin(GURL("https://example/")); + const url::Origin kOrigin = url::Origin::Create(GURL("https://foo.example/")); + const url::Origin kSuperOrigin = + url::Origin::Create(GURL("https://example/")); cache()->SetClient(kOrigin, kEndpoint1_, ReportingClient::Subdomains::INCLUDE, kGroup1_, kExpires1_); @@ -401,9 +407,12 @@ TEST_F(ReportingCacheTest, IncludeSubdomainsPreferOriginToSuperdomain) { } TEST_F(ReportingCacheTest, IncludeSubdomainsPreferMoreSpecificSuperdomain) { - const url::Origin kOrigin(GURL("https://foo.bar.example/")); - const url::Origin kSuperOrigin(GURL("https://bar.example/")); - const url::Origin kSuperSuperOrigin(GURL("https://example/")); + const url::Origin kOrigin = + url::Origin::Create(GURL("https://foo.bar.example/")); + const url::Origin kSuperOrigin = + url::Origin::Create(GURL("https://bar.example/")); + const url::Origin kSuperSuperOrigin = + url::Origin::Create(GURL("https://example/")); cache()->SetClient(kSuperOrigin, kEndpoint1_, ReportingClient::Subdomains::INCLUDE, kGroup1_, diff --git a/chromium/net/reporting/reporting_delivery_agent.cc b/chromium/net/reporting/reporting_delivery_agent.cc index 258fa5bf325..ad439cb2617 100644 --- a/chromium/net/reporting/reporting_delivery_agent.cc +++ b/chromium/net/reporting/reporting_delivery_agent.cc @@ -116,10 +116,10 @@ class ReportingDeliveryAgentImpl : public ReportingDeliveryAgent, std::map<OriginGroup, std::vector<const ReportingReport*>> origin_group_reports; for (const ReportingReport* report : reports) { - url::Origin origin(report->url); + url::Origin origin = url::Origin::Create(report->url); if (!delegate()->CanSendReport(origin)) continue; - OriginGroup origin_group(url::Origin(report->url), report->group); + OriginGroup origin_group(url::Origin::Create(report->url), report->group); origin_group_reports[origin_group].push_back(report); } @@ -182,7 +182,7 @@ class ReportingDeliveryAgentImpl : public ReportingDeliveryAgent, for (const ReportingReport* report : delivery->reports) { pending_origin_groups_.erase( - OriginGroup(url::Origin(report->url), report->group)); + OriginGroup(url::Origin::Create(report->url), report->group)); } endpoint_manager()->ClearEndpointPending(delivery->endpoint); diff --git a/chromium/net/reporting/reporting_delivery_agent_unittest.cc b/chromium/net/reporting/reporting_delivery_agent_unittest.cc index a0a0bcaff6f..4bc74893bfb 100644 --- a/chromium/net/reporting/reporting_delivery_agent_unittest.cc +++ b/chromium/net/reporting/reporting_delivery_agent_unittest.cc @@ -43,7 +43,7 @@ class ReportingDeliveryAgentTest : public ReportingTestBase { } const GURL kUrl_ = GURL("https://origin/path"); - const url::Origin kOrigin_ = url::Origin(GURL("https://origin/")); + const url::Origin kOrigin_ = url::Origin::Create(GURL("https://origin/")); const GURL kEndpoint_ = GURL("https://endpoint/"); const std::string kGroup_ = "group"; const std::string kType_ = "type"; @@ -121,7 +121,8 @@ TEST_F(ReportingDeliveryAgentTest, FailedUpload) { } TEST_F(ReportingDeliveryAgentTest, RemoveEndpointUpload) { - static const url::Origin kDifferentOrigin(GURL("https://origin2/")); + static const url::Origin kDifferentOrigin = + url::Origin::Create(GURL("https://origin2/")); cache()->SetClient(kOrigin_, kEndpoint_, ReportingClient::Subdomains::EXCLUDE, kGroup_, tomorrow()); @@ -196,7 +197,8 @@ TEST_F(ReportingDeliveryAgentTest, ConcurrentRemove) { TEST_F(ReportingDeliveryAgentTest, BatchReportsFromDifferentOriginsToSameEndpoint) { static const GURL kDifferentUrl("https://origin2/path"); - static const url::Origin kDifferentOrigin(kDifferentUrl); + static const url::Origin kDifferentOrigin = + url::Origin::Create(kDifferentUrl); cache()->SetClient(kOrigin_, kEndpoint_, ReportingClient::Subdomains::EXCLUDE, kGroup_, tomorrow()); @@ -223,7 +225,8 @@ TEST_F(ReportingDeliveryAgentTest, // pending. TEST_F(ReportingDeliveryAgentTest, SerializeUploadsToEndpoint) { static const GURL kDifferentUrl("https://origin2/path"); - static const url::Origin kDifferentOrigin(kDifferentUrl); + static const url::Origin kDifferentOrigin = + url::Origin::Create(kDifferentUrl); cache()->SetClient(kOrigin_, kEndpoint_, ReportingClient::Subdomains::EXCLUDE, kGroup_, tomorrow()); diff --git a/chromium/net/reporting/reporting_endpoint_manager_unittest.cc b/chromium/net/reporting/reporting_endpoint_manager_unittest.cc index 113128dbf50..28915e07f66 100644 --- a/chromium/net/reporting/reporting_endpoint_manager_unittest.cc +++ b/chromium/net/reporting/reporting_endpoint_manager_unittest.cc @@ -22,7 +22,7 @@ namespace { class ReportingEndpointManagerTest : public ReportingTestBase { protected: - const url::Origin kOrigin_ = url::Origin(GURL("https://origin/")); + const url::Origin kOrigin_ = url::Origin::Create(GURL("https://origin/")); const GURL kEndpoint_ = GURL("https://endpoint/"); const std::string kGroup_ = "group"; }; diff --git a/chromium/net/reporting/reporting_header_parser.cc b/chromium/net/reporting/reporting_header_parser.cc index 058b33548b2..e5db601c748 100644 --- a/chromium/net/reporting/reporting_header_parser.cc +++ b/chromium/net/reporting/reporting_header_parser.cc @@ -106,11 +106,12 @@ HeaderEndpointOutcome ProcessEndpoint(ReportingDelegate* delegate, } if (ttl_sec == 0) { - cache->RemoveClientForOriginAndEndpoint(url::Origin(url), endpoint_url); + cache->RemoveClientForOriginAndEndpoint(url::Origin::Create(url), + endpoint_url); return HeaderEndpointOutcome::REMOVED; } - url::Origin origin(url); + url::Origin origin = url::Origin::Create(url); if (!delegate->CanSetClient(origin, endpoint_url)) return HeaderEndpointOutcome::SET_REJECTED_BY_DELEGATE; diff --git a/chromium/net/reporting/reporting_header_parser_fuzzer.cc b/chromium/net/reporting/reporting_header_parser_fuzzer.cc new file mode 100644 index 00000000000..1c31b9ec17b --- /dev/null +++ b/chromium/net/reporting/reporting_header_parser_fuzzer.cc @@ -0,0 +1,71 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/time/time.h" +#include "net/reporting/reporting_cache.h" +#include "net/reporting/reporting_client.h" +#include "net/reporting/reporting_header_parser.h" +#include "net/reporting/reporting_policy.pb.h" +#include "net/reporting/reporting_test_util.h" +#include "url/gurl.h" + +#include "testing/libfuzzer/proto/json_proto_converter.h" +#include "third_party/libprotobuf-mutator/src/src/libfuzzer/libfuzzer_macro.h" + +// Silence logging from the protobuf library. +protobuf_mutator::protobuf::LogSilencer log_silencer; + +// TODO: consider including proto definition for URL after moving that to +// testing/libfuzzer/proto and creating a separate converter. +const GURL kUrl_ = GURL("https://origin/path"); + +namespace net_reporting_header_parser_fuzzer { + +void FuzzReportingHeaderParser(const std::string& data, + const net::ReportingPolicy& policy) { + net::TestReportingContext context(policy); + net::ReportingHeaderParser::ParseHeader(&context, kUrl_, data.c_str()); + std::vector<const net::ReportingClient*> clients; + context.cache()->GetClients(&clients); + if (clients.empty()) { + return; + } +} + +void InitializeReportingPolicy( + net::ReportingPolicy& policy, + const net_reporting_policy_proto::ReportingPolicy& policy_data) { + policy.max_report_count = policy_data.max_report_count(); + policy.max_client_count = policy_data.max_client_count(); + policy.delivery_interval = + base::TimeDelta::FromMicroseconds(policy_data.delivery_interval_us()); + policy.persistence_interval = + base::TimeDelta::FromMicroseconds(policy_data.persistence_interval_us()); + policy.persist_reports_across_restarts = + policy_data.persist_reports_across_restarts(); + policy.persist_clients_across_restarts = + policy_data.persist_clients_across_restarts(); + policy.garbage_collection_interval = base::TimeDelta::FromMicroseconds( + policy_data.garbage_collection_interval_us()); + policy.max_report_age = + base::TimeDelta::FromMicroseconds(policy_data.max_report_age_us()); + policy.max_report_attempts = policy_data.max_report_attempts(); + policy.clear_reports_on_network_changes = + policy_data.clear_reports_on_network_changes(); + policy.clear_clients_on_network_changes = + policy_data.clear_clients_on_network_changes(); +} + +DEFINE_BINARY_PROTO_FUZZER( + const net_reporting_policy_proto::ReportingHeaderParserFuzzInput& input) { + net::ReportingPolicy policy; + InitializeReportingPolicy(policy, input.policy()); + + json_proto::JsonProtoConverter converter; + auto data = converter.Convert(input.headers()); + + FuzzReportingHeaderParser(data, policy); +} + +} // namespace net_reporting_header_parser_fuzzer diff --git a/chromium/net/reporting/reporting_header_parser_unittest.cc b/chromium/net/reporting/reporting_header_parser_unittest.cc index 0c7d14a80ca..7d8710ad936 100644 --- a/chromium/net/reporting/reporting_header_parser_unittest.cc +++ b/chromium/net/reporting/reporting_header_parser_unittest.cc @@ -23,7 +23,7 @@ namespace { class ReportingHeaderParserTest : public ReportingTestBase { protected: const GURL kUrl_ = GURL("https://origin/path"); - const url::Origin kOrigin_ = url::Origin(GURL("https://origin/")); + const url::Origin kOrigin_ = url::Origin::Create(GURL("https://origin/")); const GURL kEndpoint_ = GURL("https://endpoint/"); const std::string kGroup_ = "group"; const std::string kType_ = "type"; diff --git a/chromium/net/reporting/reporting_network_change_observer_unittest.cc b/chromium/net/reporting/reporting_network_change_observer_unittest.cc index f5b43ece26c..8350e8dd34d 100644 --- a/chromium/net/reporting/reporting_network_change_observer_unittest.cc +++ b/chromium/net/reporting/reporting_network_change_observer_unittest.cc @@ -45,7 +45,7 @@ class ReportingNetworkChangeObserverTest : public ReportingTestBase { } const GURL kUrl_ = GURL("https://origin/path"); - const url::Origin kOrigin_ = url::Origin(kUrl_); + const url::Origin kOrigin_ = url::Origin::Create(kUrl_); const GURL kEndpoint_ = GURL("https://endpoint/"); const std::string kGroup_ = "group"; const std::string kType_ = "default"; diff --git a/chromium/net/reporting/reporting_persister_unittest.cc b/chromium/net/reporting/reporting_persister_unittest.cc index 617d6213a68..547c7208382 100644 --- a/chromium/net/reporting/reporting_persister_unittest.cc +++ b/chromium/net/reporting/reporting_persister_unittest.cc @@ -24,7 +24,7 @@ namespace { class ReportingPersisterTest : public ReportingTestBase { protected: const GURL kUrl_ = GURL("https://origin/path"); - const url::Origin kOrigin_ = url::Origin(kUrl_); + const url::Origin kOrigin_ = url::Origin::Create(kUrl_); const GURL kEndpoint_ = GURL("https://endpoint/"); const std::string kGroup_ = "group"; const std::string kType_ = "default"; diff --git a/chromium/net/reporting/reporting_policy.proto b/chromium/net/reporting/reporting_policy.proto new file mode 100644 index 00000000000..c908b8635de --- /dev/null +++ b/chromium/net/reporting/reporting_policy.proto @@ -0,0 +1,31 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Based on net::ReportingPolicy class declaration. + +syntax = "proto2"; + +import "json.proto"; + +package net_reporting_policy_proto; + +message ReportingPolicy { + // TODO: consider implementing proto for endpoint_backoff_policy. + required uint64 max_report_count = 1; + required uint64 max_client_count = 2; + required uint64 delivery_interval_us = 3; + required uint64 persistence_interval_us = 4; + required bool persist_reports_across_restarts = 5; + required bool persist_clients_across_restarts = 6; + required uint64 garbage_collection_interval_us = 7; + required uint64 max_report_age_us = 8; + required int32 max_report_attempts = 9; + required bool clear_reports_on_network_changes = 10; + required bool clear_clients_on_network_changes = 11; +} + +message ReportingHeaderParserFuzzInput { + required ReportingPolicy policy = 1; + required json_proto.JsonObject headers = 2; +} diff --git a/chromium/net/reporting/reporting_service.cc b/chromium/net/reporting/reporting_service.cc index 8db18fe4a70..e72eb7520cd 100644 --- a/chromium/net/reporting/reporting_service.cc +++ b/chromium/net/reporting/reporting_service.cc @@ -34,7 +34,7 @@ class ReportingServiceImpl : public ReportingService { const std::string& group, const std::string& type, std::unique_ptr<const base::Value> body) override { - if (!context_->delegate()->CanQueueReport(url::Origin(url))) + if (!context_->delegate()->CanQueueReport(url::Origin::Create(url))) return; context_->cache()->AddReport(url, group, type, std::move(body), diff --git a/chromium/net/reporting/reporting_service_unittest.cc b/chromium/net/reporting/reporting_service_unittest.cc index e6a3328a9a3..d8978c81f27 100644 --- a/chromium/net/reporting/reporting_service_unittest.cc +++ b/chromium/net/reporting/reporting_service_unittest.cc @@ -24,7 +24,7 @@ namespace { class ReportingServiceTest : public ::testing::Test { protected: const GURL kUrl_ = GURL("https://origin/path"); - const url::Origin kOrigin_ = url::Origin(kUrl_); + const url::Origin kOrigin_ = url::Origin::Create(kUrl_); const GURL kEndpoint_ = GURL("https://endpoint/"); const std::string kGroup_ = "group"; const std::string kType_ = "type"; |