From 07e9564dc71c9d733ffe1223564a5941c58d192d Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Tue, 4 Aug 2020 09:18:43 -0700 Subject: [PATCH] fix: use non-symbols in isURLInstance check --- patches/node/.patches | 1 + ...e_non-symbols_in_isurlinstance_check.patch | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 patches/node/lib_use_non-symbols_in_isurlinstance_check.patch diff --git a/patches/node/.patches b/patches/node/.patches index 2b1b5304e732b..7240d4a198744 100644 --- a/patches/node/.patches +++ b/patches/node/.patches @@ -40,3 +40,4 @@ update_tests_after_increasing_typed_array_size.patch darwin_work_around_clock_jumping_back_in_time.patch fix_do_not_register_the_esm_loader_in_renderer_processes.patch fix_allow_preventing_setpromiserejectcallback.patch +lib_use_non-symbols_in_isurlinstance_check.patch diff --git a/patches/node/lib_use_non-symbols_in_isurlinstance_check.patch b/patches/node/lib_use_non-symbols_in_isurlinstance_check.patch new file mode 100644 index 0000000000000..61862987fe3e6 --- /dev/null +++ b/patches/node/lib_use_non-symbols_in_isurlinstance_check.patch @@ -0,0 +1,30 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Shelley Vohr +Date: Tue, 4 Aug 2020 09:17:06 -0700 +Subject: lib: use non-symbols in isURLInstance check + +This slightly changes the conditional used to determine whether or +not something is a URL instance. Since Node.js adds symbols to the URL +not specified by the WHATWG, those symbols are not present in other +implementations (like Blink's) and therefore can cause false negatives. + +This fixes that by slightly changing the check to properties present +in all URL instances as specified in the WHATWG spec. + +Upstreamed at: https://github.com/nodejs/node/pull/34622. + +diff --git a/lib/internal/url.js b/lib/internal/url.js +index 78f5b32745a0436337233e8a4b57b89263effad6..ace274501f2c1f6bb06f600abb850e737c988338 100644 +--- a/lib/internal/url.js ++++ b/lib/internal/url.js +@@ -1394,8 +1394,8 @@ function pathToFileURL(filepath) { + } + + function isURLInstance(fileURLOrPath) { +- return fileURLOrPath != null && fileURLOrPath[searchParams] && +- fileURLOrPath[searchParams][searchParams]; ++ return fileURLOrPath != null && fileURLOrPath['href'] && ++ fileURLOrPath['origin']; + } + + function toPathIfFileURL(fileURLOrPath) {