Commit 65b9c42
dns: improve setServers() errors and performance
Issue 1: make invalid setServers yield uniform error
Behavior:
dns.setServers throws a null pointer dereference on some inputs.
Expected behavior was the more pleasant
TypeError [ERR_INVALID_IP_ADDRESS] ...
Root cause(s?):
- Dereferencing the result of a regex match without confirming
that there was a match.
- assuming the capture of an optional group (?)
Solution:
Confirm the match, and handle a missing port cleanly.
Tests: I added tests for various unusual inputs.
Issue 2: revise quadratic regex in setServers
Problem:
The IPv6 regex was quadratic.
On long malicious input the event loop could block.
The security team did not deem it a security risk,
but said a PR was welcome.
Solution:
Revise the regex to a linear-complexity version.
Tests:
I added REDOS tests to the "oddities" section.
Fixes: #20441
Fixes: #20443
PR-URL: #20445
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>1 parent b044256 commit 65b9c42Copy full SHA for 65b9c42
File tree
Expand file treeCollapse file tree
2 files changed
+35
-5
lines changedOpen diff view settings
Filter options
- lib
- test/parallel
Expand file treeCollapse file tree
2 files changed
+35
-5
lines changedOpen diff view settings
Collapse file
+10-5Lines changed: 10 additions & 5 deletions
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| ||
289 | 289 | |
290 | 290 | |
291 | 291 | |
292 | | - |
| 292 | + |
293 | 293 | |
294 | 294 | |
295 | 295 | |
| ||
309 | 309 | |
310 | 310 | |
311 | 311 | |
312 | | - |
313 | | - |
| 312 | + |
| 313 | + |
| 314 | + |
| 315 | + |
| 316 | + |
314 | 317 | |
315 | | - |
316 | | - |
| 318 | + |
| 319 | + |
| 320 | + |
| 321 | + |
317 | 322 | |
318 | 323 | |
319 | 324 | |
|
Collapse file
+25Lines changed: 25 additions & 0 deletions
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| ||
62 | 62 | |
63 | 63 | |
64 | 64 | |
| 65 | + |
| 66 | + |
| 67 | + |
| 68 | + |
| 69 | + |
| 70 | + |
| 71 | + |
| 72 | + |
| 73 | + |
| 74 | + |
| 75 | + |
| 76 | + |
| 77 | + |
| 78 | + |
| 79 | + |
| 80 | + |
| 81 | + |
| 82 | + |
| 83 | + |
| 84 | + |
| 85 | + |
| 86 | + |
| 87 | + |
| 88 | + |
| 89 | + |
65 | 90 | |
66 | 91 | |
67 | 92 | |
|
0 commit comments