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[] = { |