Skip to content

Commit

Permalink
net: validate custom lookup() output
Browse files Browse the repository at this point in the history
This commit adds validation to the IP address returned by the
net module's custom DNS lookup() function.
  • Loading branch information
cjihrig committed Aug 18, 2020
1 parent 0eca660 commit 2b8851c
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 0 deletions.
3 changes: 3 additions & 0 deletions lib/net.js
Original file line number Diff line number Diff line change
Expand Up @@ -1039,6 +1039,9 @@ function lookupAndConnect(self, options) {
// calls net.Socket.connect() on it (that's us). There are no event
// listeners registered yet so defer the error event to the next tick.
process.nextTick(connectErrorNT, self, err);
} else if (!isIP(ip)) {
err = new ERR_INVALID_IP_ADDRESS(ip);
process.nextTick(connectErrorNT, self, err);
} else if (addressType !== 4 && addressType !== 6) {
err = new ERR_INVALID_ADDRESS_FAMILY(addressType,
options.host,
Expand Down
11 changes: 11 additions & 0 deletions test/parallel/test-net-dns-custom-lookup.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,14 @@ function check(addressType, cb) {
check(4, function() {
common.hasIPv6 && check(6);
});

// Verify that bad lookup() IPs are handled.
{
net.connect({
host: 'localhost',
port: 80,
lookup(host, dnsopts, cb) {
cb(null, undefined, 4);
}
}).on('error', common.expectsError({ code: 'ERR_INVALID_IP_ADDRESS' }));
}

0 comments on commit 2b8851c

Please sign in to comment.