dns: improve setServers() errors and performance · nodejs/node@65b9c42 · GitHub
Skip to content

Commit 65b9c42

Browse files
davisjamtargos
authored andcommitted
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 65b9c42

2 files changed

Lines changed: 35 additions & 5 deletions

File tree

lib/dns.js

Lines changed: 10 additions & 5 deletions

test/parallel/test-dns.js

Lines changed: 25 additions & 0 deletions

0 commit comments

Comments
 (0)