From 7ae3720dc22d28531334a34ea93a7968d6b4e4f1 Mon Sep 17 00:00:00 2001 From: Khafra Date: Tue, 11 Apr 2023 11:24:30 -0400 Subject: [PATCH 1/2] url: validate argument length in canParse --- lib/internal/url.js | 4 ++++ test/parallel/test-url-canParse-whatwg.js | 12 ++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 test/parallel/test-url-canParse-whatwg.js diff --git a/lib/internal/url.js b/lib/internal/url.js index cb662b90ac052c..b6412dd6a5480b 100644 --- a/lib/internal/url.js +++ b/lib/internal/url.js @@ -978,6 +978,10 @@ class URL { } static canParse(url, base = undefined) { + if (arguments.length === 0) { + throw new ERR_MISSING_ARGS('url'); + } + url = `${url}`; if (base !== undefined) { diff --git a/test/parallel/test-url-canParse-whatwg.js b/test/parallel/test-url-canParse-whatwg.js new file mode 100644 index 00000000000000..997c90c343c2f2 --- /dev/null +++ b/test/parallel/test-url-canParse-whatwg.js @@ -0,0 +1,12 @@ +'use strict'; + +require('../common'); +const assert = require('assert'); + +// One argument is required +assert.throws(() => { + URL.canParse(); +}, { + code: 'ERR_MISSING_ARGS', + name: 'TypeError' +}); From 18f66f9e02b672f4788669aae75293b172a040ae Mon Sep 17 00:00:00 2001 From: Khafra Date: Tue, 11 Apr 2023 11:35:46 -0400 Subject: [PATCH 2/2] url: validate URL constructor arg length --- lib/internal/url.js | 4 ++++ test/parallel/test-url-canParse-whatwg.js | 24 +++++++++---------- .../test-whatwg-url-custom-parsing.js | 7 ++++++ 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/lib/internal/url.js b/lib/internal/url.js index b6412dd6a5480b..a6dc1272b0ce6b 100644 --- a/lib/internal/url.js +++ b/lib/internal/url.js @@ -706,6 +706,10 @@ class URL { #searchParams; constructor(input, base = undefined) { + if (arguments.length === 0) { + throw new ERR_MISSING_ARGS('url'); + } + // toUSVString is not needed. input = `${input}`; diff --git a/test/parallel/test-url-canParse-whatwg.js b/test/parallel/test-url-canParse-whatwg.js index 997c90c343c2f2..7f7d5d40aa7a28 100644 --- a/test/parallel/test-url-canParse-whatwg.js +++ b/test/parallel/test-url-canParse-whatwg.js @@ -1,12 +1,12 @@ -'use strict'; - -require('../common'); -const assert = require('assert'); - -// One argument is required -assert.throws(() => { - URL.canParse(); -}, { - code: 'ERR_MISSING_ARGS', - name: 'TypeError' -}); +'use strict'; + +require('../common'); +const assert = require('assert'); + +// One argument is required +assert.throws(() => { + URL.canParse(); +}, { + code: 'ERR_MISSING_ARGS', + name: 'TypeError', +}); diff --git a/test/parallel/test-whatwg-url-custom-parsing.js b/test/parallel/test-whatwg-url-custom-parsing.js index a3532374ca684e..905028fee3812c 100644 --- a/test/parallel/test-whatwg-url-custom-parsing.js +++ b/test/parallel/test-whatwg-url-custom-parsing.js @@ -78,3 +78,10 @@ for (const test of additional_tests) { if (test.search) assert.strictEqual(url.search, test.search); if (test.hash) assert.strictEqual(url.hash, test.hash); } + +assert.throws(() => { + new URL(); +}, { + name: 'TypeError', + code: 'ERR_MISSING_ARGS', +});