| Index: net/base/address_list.cc
|
| diff --git a/net/base/address_list.cc b/net/base/address_list.cc
|
| index 89c9496012249167e1fadd2ba038f26b9573576a..cf7f0d5c8da6514e69d73702295ab9cf54afee19 100644
|
| --- a/net/base/address_list.cc
|
| +++ b/net/base/address_list.cc
|
| @@ -19,6 +19,7 @@ namespace {
|
| // DeleteCopyOfAddrinfo(), and NOT freeaddrinfo().
|
| struct addrinfo* CreateCopyOfAddrinfo(const struct addrinfo* info,
|
| bool recursive) {
|
| + DCHECK(info);
|
| struct addrinfo* copy = new addrinfo;
|
|
|
| // Copy all the fields (some of these are pointers, we will fix that next).
|
| @@ -50,6 +51,7 @@ struct addrinfo* CreateCopyOfAddrinfo(const struct addrinfo* info,
|
|
|
| // Free an addrinfo that was created by CreateCopyOfAddrinfo().
|
| void FreeMyAddrinfo(struct addrinfo* info) {
|
| + DCHECK(info);
|
| if (info->ai_canonname)
|
| free(info->ai_canonname); // Allocated by strdup.
|
|
|
| @@ -67,6 +69,7 @@ void FreeMyAddrinfo(struct addrinfo* info) {
|
|
|
| // Returns the address to port field in |info|.
|
| uint16* GetPortField(const struct addrinfo* info) {
|
| + DCHECK(info);
|
| if (info->ai_family == AF_INET) {
|
| DCHECK_EQ(sizeof(sockaddr_in), info->ai_addrlen);
|
| struct sockaddr_in* sockaddr =
|
| @@ -106,6 +109,7 @@ void AddressList::Copy(const struct addrinfo* head, bool recursive) {
|
| }
|
|
|
| void AddressList::Append(const struct addrinfo* head) {
|
| + DCHECK(head);
|
| struct addrinfo* new_head;
|
| if (data_->is_system_created) {
|
| new_head = CreateCopyOfAddrinfo(data_->head, true);
|
| @@ -118,6 +122,7 @@ void AddressList::Append(const struct addrinfo* head) {
|
| struct addrinfo* copy_ptr = new_head;
|
| while (copy_ptr->ai_next)
|
| copy_ptr = copy_ptr->ai_next;
|
| + DCHECK(!head->ai_canonname);
|
| copy_ptr->ai_next = CreateCopyOfAddrinfo(head, true);
|
| }
|
|
|
| @@ -176,6 +181,11 @@ AddressList AddressList::CreateIPv6Address(unsigned char data[16]) {
|
| return AddressList(new Data(ai, false /*is_system_created*/));
|
| }
|
|
|
| +AddressList::Data::Data(struct addrinfo* ai, bool is_system_created)
|
| + : head(ai), is_system_created(is_system_created) {
|
| + DCHECK(head);
|
| +}
|
| +
|
| AddressList::Data::~Data() {
|
| // Call either freeaddrinfo(head), or FreeMyAddrinfo(head), depending who
|
| // created the data.
|
|
|