Skip to content

Commit

Permalink
dns: prevent undefined values in results
Browse files Browse the repository at this point in the history
When getaddrinfo linked-list results contain entries other than AF_INET
and AF_INET6, the resulting v8::Array will contain undefined values.
That's because initialization of v8::Array pre-allocates entries for all
linked-list nodes, but not all of them will be in the final results.
This commit ensures that the array only contains valid results.

PR-URL: #3696
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
  • Loading branch information
Junliang Yan authored and jasnell committed Dec 23, 2015
1 parent 301e166 commit e1cefda
Showing 1 changed file with 1 addition and 8 deletions.
9 changes: 1 addition & 8 deletions src/cares_wrap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -922,19 +922,12 @@ void AfterGetAddrInfo(uv_getaddrinfo_t* req, int status, struct addrinfo* res) {
struct addrinfo *address;
int n = 0;

// Count the number of responses.
for (address = res; address; address = address->ai_next) {
n++;
}

// Create the response array.
Local<Array> results = Array::New(env->isolate(), n);
Local<Array> results = Array::New(env->isolate());

char ip[INET6_ADDRSTRLEN];
const char *addr;

n = 0;

// Iterate over the IPv4 responses again this time creating javascript
// strings for each IP and filling the results array.
address = res;
Expand Down

0 comments on commit e1cefda

Please sign in to comment.