diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-12-10 16:19:40 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-12-10 16:01:50 +0000 |
commit | 51f6c2793adab2d864b3d2b360000ef8db1d3e92 (patch) | |
tree | 835b3b4446b012c75e80177cef9fbe6972cc7dbe /chromium/net/dns/record_rdata.cc | |
parent | 6036726eb981b6c4b42047513b9d3f4ac865daac (diff) | |
download | qtwebengine-chromium-51f6c2793adab2d864b3d2b360000ef8db1d3e92.tar.gz |
BASELINE: Update Chromium to 71.0.3578.93
Change-Id: I6a32086c33670e1b033f8b10e6bf1fd4da1d105d
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/net/dns/record_rdata.cc')
-rw-r--r-- | chromium/net/dns/record_rdata.cc | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/chromium/net/dns/record_rdata.cc b/chromium/net/dns/record_rdata.cc index c8f86048232..86991b2287e 100644 --- a/chromium/net/dns/record_rdata.cc +++ b/chromium/net/dns/record_rdata.cc @@ -16,6 +16,26 @@ static const size_t kSrvRecordMinimumSize = 6; RecordRdata::RecordRdata() = default; +bool RecordRdata::HasValidSize(const base::StringPiece& data, uint16_t type) { + switch (type) { + case dns_protocol::kTypeSRV: + return data.size() >= kSrvRecordMinimumSize; + case dns_protocol::kTypeA: + return data.size() == IPAddress::kIPv4AddressSize; + case dns_protocol::kTypeAAAA: + return data.size() == IPAddress::kIPv6AddressSize; + case dns_protocol::kTypeCNAME: + case dns_protocol::kTypePTR: + case dns_protocol::kTypeTXT: + case dns_protocol::kTypeNSEC: + case dns_protocol::kTypeOPT: + return true; + default: + VLOG(1) << "Unsupported RDATA type."; + return false; + } +} + SrvRecordRdata::SrvRecordRdata() : priority_(0), weight_(0), port_(0) { } @@ -25,7 +45,7 @@ SrvRecordRdata::~SrvRecordRdata() = default; std::unique_ptr<SrvRecordRdata> SrvRecordRdata::Create( const base::StringPiece& data, const DnsRecordParser& parser) { - if (data.size() < kSrvRecordMinimumSize) + if (!HasValidSize(data, kType)) return std::unique_ptr<SrvRecordRdata>(); std::unique_ptr<SrvRecordRdata> rdata(new SrvRecordRdata); @@ -64,7 +84,7 @@ ARecordRdata::~ARecordRdata() = default; std::unique_ptr<ARecordRdata> ARecordRdata::Create( const base::StringPiece& data, const DnsRecordParser& parser) { - if (data.size() != IPAddress::kIPv4AddressSize) + if (!HasValidSize(data, kType)) return std::unique_ptr<ARecordRdata>(); std::unique_ptr<ARecordRdata> rdata(new ARecordRdata); @@ -91,7 +111,7 @@ AAAARecordRdata::~AAAARecordRdata() = default; std::unique_ptr<AAAARecordRdata> AAAARecordRdata::Create( const base::StringPiece& data, const DnsRecordParser& parser) { - if (data.size() != IPAddress::kIPv6AddressSize) + if (!HasValidSize(data, kType)) return std::unique_ptr<AAAARecordRdata>(); std::unique_ptr<AAAARecordRdata> rdata(new AAAARecordRdata); |