net: validate custom lookup() output
This commit adds validation to the IP address returned by the net module's custom DNS lookup() function. PR-URL: https://github.com/nodejs/node/pull/34813 Fixes: https://github.com/nodejs/node/issues/34812 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Ricky Zhou <0x19951125@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
parent
42b5f5f1bd
commit
24cc4a6e7d
@ -1039,6 +1039,9 @@ function lookupAndConnect(self, options) {
|
|||||||
// calls net.Socket.connect() on it (that's us). There are no event
|
// 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.
|
// listeners registered yet so defer the error event to the next tick.
|
||||||
process.nextTick(connectErrorNT, self, err);
|
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) {
|
} else if (addressType !== 4 && addressType !== 6) {
|
||||||
err = new ERR_INVALID_ADDRESS_FAMILY(addressType,
|
err = new ERR_INVALID_ADDRESS_FAMILY(addressType,
|
||||||
options.host,
|
options.host,
|
||||||
|
@ -41,3 +41,14 @@ function check(addressType, cb) {
|
|||||||
check(4, function() {
|
check(4, function() {
|
||||||
common.hasIPv6 && check(6);
|
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' }));
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user