fix: use non-symbols in isURLInstance check (#24831)
This commit is contained in:
		
					parent
					
						
							
								a2c82f2342
							
						
					
				
			
			
				commit
				
					
						6cb23e1d36
					
				
			
		
					 3 changed files with 40 additions and 0 deletions
				
			
		|  | @ -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 | ||||
|  |  | |||
|  | @ -0,0 +1,30 @@ | |||
| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||||
| From: Shelley Vohr <shelley.vohr@gmail.com> | ||||
| 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) { | ||||
|  | @ -174,6 +174,15 @@ describe('node feature', () => { | |||
|       }); | ||||
|     }); | ||||
| 
 | ||||
|     describe('URL handling in the renderer process', () => { | ||||
|       it('can successfully handle WHATWG URLs constructed by Blink', () => { | ||||
|         const url = new URL('file://' + path.resolve(fixtures, 'pages', 'base-page.html')); | ||||
|         expect(() => { | ||||
|           fs.createReadStream(url); | ||||
|         }).to.not.throw(); | ||||
|       }); | ||||
|     }); | ||||
| 
 | ||||
|     describe('error thrown in main process node context', () => { | ||||
|       it('gets emitted as a process uncaughtException event', () => { | ||||
|         const error = ipcRenderer.sendSync('handle-uncaught-exception', 'hello'); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Shelley Vohr
				Shelley Vohr