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