| Index: net/dns/dns_response_unittest.cc
|
| diff --git a/net/dns/dns_response_unittest.cc b/net/dns/dns_response_unittest.cc
|
| index 9cb98cead5f4769258e82026785f7129b91f676d..e701c9a9eca1e0cee0aaa3bb0fdc7d8bfbac6e98 100644
|
| --- a/net/dns/dns_response_unittest.cc
|
| +++ b/net/dns/dns_response_unittest.cc
|
| @@ -29,17 +29,15 @@ TEST(DnsRecordParserTest, Constructor) {
|
| }
|
|
|
| TEST(DnsRecordParserTest, ReadName) {
|
| - const uint8 data[] = {
|
| + const uint8_t data[] = {
|
| // all labels "foo.example.com"
|
| - 0x03, 'f', 'o', 'o',
|
| - 0x07, 'e', 'x', 'a', 'm', 'p', 'l', 'e',
|
| - 0x03, 'c', 'o', 'm',
|
| + 0x03, 'f', 'o', 'o', 0x07, 'e', 'x', 'a', 'm', 'p', 'l', 'e', 0x03, 'c',
|
| + 'o', 'm',
|
| // byte 0x10
|
| 0x00,
|
| // byte 0x11
|
| // part label, part pointer, "bar.example.com"
|
| - 0x03, 'b', 'a', 'r',
|
| - 0xc0, 0x04,
|
| + 0x03, 'b', 'a', 'r', 0xc0, 0x04,
|
| // byte 0x17
|
| // all pointer to "bar.example.com", 2 jumps
|
| 0xc0, 0x11,
|
| @@ -75,15 +73,13 @@ TEST(DnsRecordParserTest, ReadName) {
|
| }
|
|
|
| TEST(DnsRecordParserTest, ReadNameFail) {
|
| - const uint8 data[] = {
|
| + const uint8_t data[] = {
|
| // label length beyond packet
|
| - 0x30, 'x', 'x',
|
| - 0x00,
|
| + 0x30, 'x', 'x', 0x00,
|
| // pointer offset beyond packet
|
| 0xc0, 0x20,
|
| // pointer loop
|
| - 0xc0, 0x08,
|
| - 0xc0, 0x06,
|
| + 0xc0, 0x08, 0xc0, 0x06,
|
| // incorrect label type (currently supports only direct and pointer)
|
| 0x80, 0x00,
|
| // truncated name (missing root label)
|
| @@ -103,12 +99,10 @@ TEST(DnsRecordParserTest, ReadNameFail) {
|
| }
|
|
|
| TEST(DnsRecordParserTest, ReadRecord) {
|
| - const uint8 data[] = {
|
| + const uint8_t data[] = {
|
| // Type CNAME record.
|
| - 0x07, 'e', 'x', 'a', 'm', 'p', 'l', 'e',
|
| - 0x03, 'c', 'o', 'm',
|
| - 0x00,
|
| - 0x00, 0x05, // TYPE is CNAME.
|
| + 0x07, 'e', 'x', 'a', 'm', 'p', 'l', 'e', 0x03, 'c', 'o', 'm', 0x00, 0x00,
|
| + 0x05, // TYPE is CNAME.
|
| 0x00, 0x01, // CLASS is IN.
|
| 0x00, 0x01, 0x24, 0x74, // TTL is 0x00012474.
|
| 0x00, 0x06, // RDLENGTH is 6 bytes.
|
| @@ -116,8 +110,7 @@ TEST(DnsRecordParserTest, ReadRecord) {
|
| 0xc0, 0x00,
|
| // Type A record.
|
| 0x03, 'b', 'a', 'r', // compressed owner name
|
| - 0xc0, 0x00,
|
| - 0x00, 0x01, // TYPE is A.
|
| + 0xc0, 0x00, 0x00, 0x01, // TYPE is A.
|
| 0x00, 0x01, // CLASS is IN.
|
| 0x00, 0x20, 0x13, 0x55, // TTL is 0x00201355.
|
| 0x00, 0x04, // RDLENGTH is 4 bytes.
|
| @@ -161,47 +154,40 @@ TEST(DnsResponseTest, InitParse) {
|
| // Compilers want to copy when binding temporary to const &, so must use heap.
|
| scoped_ptr<DnsQuery> query(new DnsQuery(0xcafe, qname, dns_protocol::kTypeA));
|
|
|
| - const uint8 response_data[] = {
|
| - // Header
|
| - 0xca, 0xfe, // ID
|
| - 0x81, 0x80, // Standard query response, RA, no error
|
| - 0x00, 0x01, // 1 question
|
| - 0x00, 0x02, // 2 RRs (answers)
|
| - 0x00, 0x00, // 0 authority RRs
|
| - 0x00, 0x00, // 0 additional RRs
|
| -
|
| - // Question
|
| - // This part is echoed back from the respective query.
|
| - 0x0a, 'c', 'o', 'd', 'e', 'r', 'e', 'v', 'i', 'e', 'w',
|
| - 0x08, 'c', 'h', 'r', 'o', 'm', 'i', 'u', 'm',
|
| - 0x03, 'o', 'r', 'g',
|
| - 0x00,
|
| - 0x00, 0x01, // TYPE is A.
|
| - 0x00, 0x01, // CLASS is IN.
|
| -
|
| - // Answer 1
|
| - 0xc0, 0x0c, // NAME is a pointer to name in Question section.
|
| - 0x00, 0x05, // TYPE is CNAME.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - 0x24, 0x74,
|
| - 0x00, 0x12, // RDLENGTH is 18 bytes.
|
| - // ghs.l.google.com in DNS format.
|
| - 0x03, 'g', 'h', 's',
|
| - 0x01, 'l',
|
| - 0x06, 'g', 'o', 'o', 'g', 'l', 'e',
|
| - 0x03, 'c', 'o', 'm',
|
| - 0x00,
|
| -
|
| - // Answer 2
|
| - 0xc0, 0x35, // NAME is a pointer to name in Answer 1.
|
| - 0x00, 0x01, // TYPE is A.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x00, // TTL (4 bytes) is 53 seconds.
|
| - 0x00, 0x35,
|
| - 0x00, 0x04, // RDLENGTH is 4 bytes.
|
| - 0x4a, 0x7d, // RDATA is the IP: 74.125.95.121
|
| - 0x5f, 0x79,
|
| + const uint8_t response_data[] = {
|
| + // Header
|
| + 0xca, 0xfe, // ID
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x01, // 1 question
|
| + 0x00, 0x02, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
| +
|
| + // Question
|
| + // This part is echoed back from the respective query.
|
| + 0x0a, 'c', 'o', 'd', 'e', 'r', 'e', 'v', 'i', 'e', 'w', 0x08, 'c', 'h',
|
| + 'r', 'o', 'm', 'i', 'u', 'm', 0x03, 'o', 'r', 'g', 0x00, 0x00,
|
| + 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| +
|
| + // Answer 1
|
| + 0xc0, 0x0c, // NAME is a pointer to name in Question section.
|
| + 0x00, 0x05, // TYPE is CNAME.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74, 0x00, 0x12, // RDLENGTH is 18 bytes.
|
| + // ghs.l.google.com in DNS format.
|
| + 0x03, 'g', 'h', 's', 0x01, 'l', 0x06, 'g', 'o', 'o', 'g', 'l', 'e', 0x03,
|
| + 'c', 'o', 'm', 0x00,
|
| +
|
| + // Answer 2
|
| + 0xc0, 0x35, // NAME is a pointer to name in Answer 1.
|
| + 0x00, 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x00, // TTL (4 bytes) is 53 seconds.
|
| + 0x00, 0x35, 0x00, 0x04, // RDLENGTH is 4 bytes.
|
| + 0x4a, 0x7d, // RDATA is the IP: 74.125.95.121
|
| + 0x5f, 0x79,
|
| };
|
|
|
| DnsResponse resp;
|
| @@ -274,27 +260,24 @@ TEST(DnsResponseTest, InitParseWithoutQuery) {
|
| }
|
|
|
| TEST(DnsResponseTest, InitParseWithoutQueryNoQuestions) {
|
| - const uint8 response_data[] = {
|
| - // Header
|
| - 0xca, 0xfe, // ID
|
| - 0x81, 0x80, // Standard query response, RA, no error
|
| - 0x00, 0x00, // No question
|
| - 0x00, 0x01, // 2 RRs (answers)
|
| - 0x00, 0x00, // 0 authority RRs
|
| - 0x00, 0x00, // 0 additional RRs
|
| -
|
| - // Answer 1
|
| - 0x0a, 'c', 'o', 'd', 'e', 'r', 'e', 'v', 'i', 'e', 'w',
|
| - 0x08, 'c', 'h', 'r', 'o', 'm', 'i', 'u', 'm',
|
| - 0x03, 'o', 'r', 'g',
|
| - 0x00,
|
| - 0x00, 0x01, // TYPE is A.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x00, // TTL (4 bytes) is 53 seconds.
|
| - 0x00, 0x35,
|
| - 0x00, 0x04, // RDLENGTH is 4 bytes.
|
| - 0x4a, 0x7d, // RDATA is the IP: 74.125.95.121
|
| - 0x5f, 0x79,
|
| + const uint8_t response_data[] = {
|
| + // Header
|
| + 0xca, 0xfe, // ID
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No question
|
| + 0x00, 0x01, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
| +
|
| + // Answer 1
|
| + 0x0a, 'c', 'o', 'd', 'e', 'r', 'e', 'v', 'i', 'e', 'w', 0x08, 'c', 'h',
|
| + 'r', 'o', 'm', 'i', 'u', 'm', 0x03, 'o', 'r', 'g', 0x00, 0x00,
|
| + 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x00, // TTL (4 bytes) is 53 seconds.
|
| + 0x00, 0x35, 0x00, 0x04, // RDLENGTH is 4 bytes.
|
| + 0x4a, 0x7d, // RDATA is the IP: 74.125.95.121
|
| + 0x5f, 0x79,
|
| };
|
|
|
| DnsResponse resp;
|
| @@ -321,38 +304,35 @@ TEST(DnsResponseTest, InitParseWithoutQueryNoQuestions) {
|
| }
|
|
|
| TEST(DnsResponseTest, InitParseWithoutQueryTwoQuestions) {
|
| - const uint8 response_data[] = {
|
| - // Header
|
| - 0xca, 0xfe, // ID
|
| - 0x81, 0x80, // Standard query response, RA, no error
|
| - 0x00, 0x02, // 2 questions
|
| - 0x00, 0x01, // 2 RRs (answers)
|
| - 0x00, 0x00, // 0 authority RRs
|
| - 0x00, 0x00, // 0 additional RRs
|
| -
|
| - // Question 1
|
| - 0x0a, 'c', 'o', 'd', 'e', 'r', 'e', 'v', 'i', 'e', 'w',
|
| - 0x08, 'c', 'h', 'r', 'o', 'm', 'i', 'u', 'm',
|
| - 0x03, 'o', 'r', 'g',
|
| - 0x00,
|
| - 0x00, 0x01, // TYPE is A.
|
| - 0x00, 0x01, // CLASS is IN.
|
| -
|
| - // Question 2
|
| - 0x0b, 'c', 'o', 'd', 'e', 'r', 'e', 'v', 'i', 'e', 'w', '2',
|
| - 0xc0, 0x18, // pointer to "chromium.org"
|
| - 0x00, 0x01, // TYPE is A.
|
| - 0x00, 0x01, // CLASS is IN.
|
| -
|
| - // Answer 1
|
| - 0xc0, 0x0c, // NAME is a pointer to name in Question section.
|
| - 0x00, 0x01, // TYPE is A.
|
| - 0x00, 0x01, // CLASS is IN.
|
| - 0x00, 0x00, // TTL (4 bytes) is 53 seconds.
|
| - 0x00, 0x35,
|
| - 0x00, 0x04, // RDLENGTH is 4 bytes.
|
| - 0x4a, 0x7d, // RDATA is the IP: 74.125.95.121
|
| - 0x5f, 0x79,
|
| + const uint8_t response_data[] = {
|
| + // Header
|
| + 0xca, 0xfe, // ID
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x02, // 2 questions
|
| + 0x00, 0x01, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
| +
|
| + // Question 1
|
| + 0x0a, 'c', 'o', 'd', 'e', 'r', 'e', 'v', 'i', 'e', 'w', 0x08, 'c', 'h',
|
| + 'r', 'o', 'm', 'i', 'u', 'm', 0x03, 'o', 'r', 'g', 0x00, 0x00,
|
| + 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| +
|
| + // Question 2
|
| + 0x0b, 'c', 'o', 'd', 'e', 'r', 'e', 'v', 'i', 'e', 'w', '2', 0xc0,
|
| + 0x18, // pointer to "chromium.org"
|
| + 0x00, 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| +
|
| + // Answer 1
|
| + 0xc0, 0x0c, // NAME is a pointer to name in Question section.
|
| + 0x00, 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x00, // TTL (4 bytes) is 53 seconds.
|
| + 0x00, 0x35, 0x00, 0x04, // RDLENGTH is 4 bytes.
|
| + 0x4a, 0x7d, // RDATA is the IP: 74.125.95.121
|
| + 0x5f, 0x79,
|
| };
|
|
|
| DnsResponse resp;
|
| @@ -379,11 +359,11 @@ TEST(DnsResponseTest, InitParseWithoutQueryTwoQuestions) {
|
| }
|
|
|
| TEST(DnsResponseTest, InitParseWithoutQueryPacketTooShort) {
|
| - const uint8 response_data[] = {
|
| - // Header
|
| - 0xca, 0xfe, // ID
|
| - 0x81, 0x80, // Standard query response, RA, no error
|
| - 0x00, 0x00, // No question
|
| + const uint8_t response_data[] = {
|
| + // Header
|
| + 0xca, 0xfe, // ID
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No question
|
| };
|
|
|
| DnsResponse resp;
|
| @@ -404,7 +384,7 @@ void VerifyAddressList(const std::vector<const char*>& ip_addresses,
|
| TEST(DnsResponseTest, ParseToAddressList) {
|
| const struct TestCase {
|
| size_t query_size;
|
| - const uint8* response_data;
|
| + const uint8_t* response_data;
|
| size_t response_size;
|
| const char* const* expected_addresses;
|
| size_t num_expected_addresses;
|
| @@ -457,92 +437,92 @@ TEST(DnsResponseTest, ParseToAddressList) {
|
| }
|
| }
|
|
|
| -const uint8 kResponseTruncatedRecord[] = {
|
| - // Header: 1 question, 1 answer RR
|
| - 0x00, 0x00, 0x81, 0x80, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
|
| - // Question: name = 'a', type = A (0x1)
|
| - 0x01, 'a', 0x00, 0x00, 0x01, 0x00, 0x01,
|
| - // Answer: name = 'a', type = A, TTL = 0xFF, RDATA = 10.10.10.10
|
| - 0x01, 'a', 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF,
|
| - 0x00, 0x04, 0x0A, 0x0A, 0x0A, // Truncated RDATA.
|
| +const uint8_t kResponseTruncatedRecord[] = {
|
| + // Header: 1 question, 1 answer RR
|
| + 0x00, 0x00, 0x81, 0x80, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
|
| + // Question: name = 'a', type = A (0x1)
|
| + 0x01, 'a', 0x00, 0x00, 0x01, 0x00, 0x01,
|
| + // Answer: name = 'a', type = A, TTL = 0xFF, RDATA = 10.10.10.10
|
| + 0x01, 'a', 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x04,
|
| + 0x0A, 0x0A, 0x0A, // Truncated RDATA.
|
| };
|
|
|
| -const uint8 kResponseTruncatedCNAME[] = {
|
| - // Header: 1 question, 1 answer RR
|
| - 0x00, 0x00, 0x81, 0x80, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
|
| - // Question: name = 'a', type = A (0x1)
|
| - 0x01, 'a', 0x00, 0x00, 0x01, 0x00, 0x01,
|
| - // Answer: name = 'a', type = CNAME, TTL = 0xFF, RDATA = 'foo' (truncated)
|
| - 0x01, 'a', 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF,
|
| - 0x00, 0x03, 0x03, 'f', 'o', // Truncated name.
|
| +const uint8_t kResponseTruncatedCNAME[] = {
|
| + // Header: 1 question, 1 answer RR
|
| + 0x00, 0x00, 0x81, 0x80, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
|
| + // Question: name = 'a', type = A (0x1)
|
| + 0x01, 'a', 0x00, 0x00, 0x01, 0x00, 0x01,
|
| + // Answer: name = 'a', type = CNAME, TTL = 0xFF, RDATA = 'foo' (truncated)
|
| + 0x01, 'a', 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x03,
|
| + 0x03, 'f', 'o', // Truncated name.
|
| };
|
|
|
| -const uint8 kResponseNameMismatch[] = {
|
| - // Header: 1 question, 1 answer RR
|
| - 0x00, 0x00, 0x81, 0x80, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
|
| - // Question: name = 'a', type = A (0x1)
|
| - 0x01, 'a', 0x00, 0x00, 0x01, 0x00, 0x01,
|
| - // Answer: name = 'b', type = A, TTL = 0xFF, RDATA = 10.10.10.10
|
| - 0x01, 'b', 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF,
|
| - 0x00, 0x04, 0x0A, 0x0A, 0x0A, 0x0A,
|
| +const uint8_t kResponseNameMismatch[] = {
|
| + // Header: 1 question, 1 answer RR
|
| + 0x00, 0x00, 0x81, 0x80, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
|
| + // Question: name = 'a', type = A (0x1)
|
| + 0x01, 'a', 0x00, 0x00, 0x01, 0x00, 0x01,
|
| + // Answer: name = 'b', type = A, TTL = 0xFF, RDATA = 10.10.10.10
|
| + 0x01, 'b', 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x04,
|
| + 0x0A, 0x0A, 0x0A, 0x0A,
|
| };
|
|
|
| -const uint8 kResponseNameMismatchInChain[] = {
|
| - // Header: 1 question, 3 answer RR
|
| - 0x00, 0x00, 0x81, 0x80, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
|
| - // Question: name = 'a', type = A (0x1)
|
| - 0x01, 'a', 0x00, 0x00, 0x01, 0x00, 0x01,
|
| - // Answer: name = 'a', type = CNAME, TTL = 0xFF, RDATA = 'b'
|
| - 0x01, 'a', 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF,
|
| - 0x00, 0x03, 0x01, 'b', 0x00,
|
| - // Answer: name = 'b', type = A, TTL = 0xFF, RDATA = 10.10.10.10
|
| - 0x01, 'b', 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF,
|
| - 0x00, 0x04, 0x0A, 0x0A, 0x0A, 0x0A,
|
| - // Answer: name = 'c', type = A, TTL = 0xFF, RDATA = 10.10.10.11
|
| - 0x01, 'c', 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF,
|
| - 0x00, 0x04, 0x0A, 0x0A, 0x0A, 0x0B,
|
| +const uint8_t kResponseNameMismatchInChain[] = {
|
| + // Header: 1 question, 3 answer RR
|
| + 0x00, 0x00, 0x81, 0x80, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
|
| + // Question: name = 'a', type = A (0x1)
|
| + 0x01, 'a', 0x00, 0x00, 0x01, 0x00, 0x01,
|
| + // Answer: name = 'a', type = CNAME, TTL = 0xFF, RDATA = 'b'
|
| + 0x01, 'a', 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x03,
|
| + 0x01, 'b', 0x00,
|
| + // Answer: name = 'b', type = A, TTL = 0xFF, RDATA = 10.10.10.10
|
| + 0x01, 'b', 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x04,
|
| + 0x0A, 0x0A, 0x0A, 0x0A,
|
| + // Answer: name = 'c', type = A, TTL = 0xFF, RDATA = 10.10.10.11
|
| + 0x01, 'c', 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x04,
|
| + 0x0A, 0x0A, 0x0A, 0x0B,
|
| };
|
|
|
| -const uint8 kResponseSizeMismatch[] = {
|
| - // Header: 1 answer RR
|
| - 0x00, 0x00, 0x81, 0x80, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
|
| - // Question: name = 'a', type = AAAA (0x1c)
|
| - 0x01, 'a', 0x00, 0x00, 0x1c, 0x00, 0x01,
|
| - // Answer: name = 'a', type = AAAA, TTL = 0xFF, RDATA = 10.10.10.10
|
| - 0x01, 'a', 0x00, 0x00, 0x1c, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF,
|
| - 0x00, 0x04, 0x0A, 0x0A, 0x0A, 0x0A,
|
| +const uint8_t kResponseSizeMismatch[] = {
|
| + // Header: 1 answer RR
|
| + 0x00, 0x00, 0x81, 0x80, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
|
| + // Question: name = 'a', type = AAAA (0x1c)
|
| + 0x01, 'a', 0x00, 0x00, 0x1c, 0x00, 0x01,
|
| + // Answer: name = 'a', type = AAAA, TTL = 0xFF, RDATA = 10.10.10.10
|
| + 0x01, 'a', 0x00, 0x00, 0x1c, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x04,
|
| + 0x0A, 0x0A, 0x0A, 0x0A,
|
| };
|
|
|
| -const uint8 kResponseCNAMEAfterAddress[] = {
|
| - // Header: 2 answer RR
|
| - 0x00, 0x00, 0x81, 0x80, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
|
| - // Question: name = 'a', type = A (0x1)
|
| - 0x01, 'a', 0x00, 0x00, 0x01, 0x00, 0x01,
|
| - // Answer: name = 'a', type = A, TTL = 0xFF, RDATA = 10.10.10.10.
|
| - 0x01, 'a', 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF,
|
| - 0x00, 0x04, 0x0A, 0x0A, 0x0A, 0x0A,
|
| - // Answer: name = 'a', type = CNAME, TTL = 0xFF, RDATA = 'b'
|
| - 0x01, 'a', 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF,
|
| - 0x00, 0x03, 0x01, 'b', 0x00,
|
| +const uint8_t kResponseCNAMEAfterAddress[] = {
|
| + // Header: 2 answer RR
|
| + 0x00, 0x00, 0x81, 0x80, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
|
| + // Question: name = 'a', type = A (0x1)
|
| + 0x01, 'a', 0x00, 0x00, 0x01, 0x00, 0x01,
|
| + // Answer: name = 'a', type = A, TTL = 0xFF, RDATA = 10.10.10.10.
|
| + 0x01, 'a', 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x04,
|
| + 0x0A, 0x0A, 0x0A, 0x0A,
|
| + // Answer: name = 'a', type = CNAME, TTL = 0xFF, RDATA = 'b'
|
| + 0x01, 'a', 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x03,
|
| + 0x01, 'b', 0x00,
|
| };
|
|
|
| -const uint8 kResponseNoAddresses[] = {
|
| - // Header: 1 question, 1 answer RR, 1 authority RR
|
| - 0x00, 0x00, 0x81, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
| - // Question: name = 'a', type = A (0x1)
|
| - 0x01, 'a', 0x00, 0x00, 0x01, 0x00, 0x01,
|
| - // Answer: name = 'a', type = CNAME, TTL = 0xFF, RDATA = 'b'
|
| - 0x01, 'a', 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF,
|
| - 0x00, 0x03, 0x01, 'b', 0x00,
|
| - // Authority section
|
| - // Answer: name = 'b', type = A, TTL = 0xFF, RDATA = 10.10.10.10
|
| - 0x01, 'b', 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF,
|
| - 0x00, 0x04, 0x0A, 0x0A, 0x0A, 0x0A,
|
| +const uint8_t kResponseNoAddresses[] = {
|
| + // Header: 1 question, 1 answer RR, 1 authority RR
|
| + 0x00, 0x00, 0x81, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
| + // Question: name = 'a', type = A (0x1)
|
| + 0x01, 'a', 0x00, 0x00, 0x01, 0x00, 0x01,
|
| + // Answer: name = 'a', type = CNAME, TTL = 0xFF, RDATA = 'b'
|
| + 0x01, 'a', 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x03,
|
| + 0x01, 'b', 0x00,
|
| + // Authority section
|
| + // Answer: name = 'b', type = A, TTL = 0xFF, RDATA = 10.10.10.10
|
| + 0x01, 'b', 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x04,
|
| + 0x0A, 0x0A, 0x0A, 0x0A,
|
| };
|
|
|
| TEST(DnsResponseTest, ParseToAddressListFail) {
|
| const struct TestCase {
|
| - const uint8* data;
|
| + const uint8_t* data;
|
| size_t size;
|
| DnsResponse::Result expected_result;
|
| } cases[] = {
|
|
|