From f6b29e650746d498f763cf3a173fbe5bb62cb5a9 Mon Sep 17 00:00:00 2001 From: Lazizbek Ergashev Date: Fri, 31 Jul 2026 23:44:07 +0500 Subject: [PATCH] dns: validate address type in lookupService Signed-off-by: Lazizbek Ergashev --- lib/dns.js | 3 +++ lib/internal/dns/promises.js | 2 ++ test/parallel/test-dns.js | 18 ++++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/lib/dns.js b/lib/dns.js index 110a19298ead..da1ffd21f052 100644 --- a/lib/dns.js +++ b/lib/dns.js @@ -83,6 +83,7 @@ const { validateNumber, validateOneOf, validatePort, + validateString, validateStringWithoutNullBytes, } = require('internal/validators'); @@ -269,6 +270,8 @@ function lookupService(address, port, callback) { if (arguments.length !== 3) throw new ERR_MISSING_ARGS('address', 'port', 'callback'); + validateString(address, 'address'); + if (isIP(address) === 0) throw new ERR_INVALID_ARG_VALUE('address', address); diff --git a/lib/internal/dns/promises.js b/lib/internal/dns/promises.js index 0b6914500b23..1dd6417d7535 100644 --- a/lib/internal/dns/promises.js +++ b/lib/internal/dns/promises.js @@ -282,6 +282,8 @@ function lookupService(address, port) { if (arguments.length !== 2) throw new ERR_MISSING_ARGS('address', 'port'); + validateString(address, 'address'); + if (isIP(address) === 0) throw new ERR_INVALID_ARG_VALUE('address', address); diff --git a/test/parallel/test-dns.js b/test/parallel/test-dns.js index e885a700752e..aef768f59d50 100644 --- a/test/parallel/test-dns.js +++ b/test/parallel/test-dns.js @@ -377,6 +377,24 @@ assert.throws(() => { }, err); } +{ + const invalidAddress = Buffer.from('127.0.0.1'); + const err = { + code: 'ERR_INVALID_ARG_TYPE', + name: 'TypeError', + message: 'The "address" argument must be of type string. ' + + 'Received an instance of Buffer' + }; + + assert.throws(() => { + dnsPromises.lookupService(invalidAddress, 0); + }, err); + + assert.throws(() => { + dns.lookupService(invalidAddress, 0, common.mustNotCall()); + }, err); +} + [null, undefined, 65538, 'test', NaN, Infinity, Symbol(), 0n, true, false, '', () => {}, {}].forEach((port) => { const err = { code: 'ERR_SOCKET_BAD_PORT',