Skip to content

Commit fef957a

Browse files
Stewart Addisonaddaleax
Stewart Addison
authored andcommitted
net: allow wider regex in interface name
Zone IDs on Linux are network interface names. The regex we use to determine valid IPs does not allow for non-alphanumeric characters in the zone ID suffix. Some machines (including the RHEL Linux/s390x machines from Marist) have zone IDs with a '.' character in them which the regex in net.isIP rejects. This changes the regex. Ref: #14500 Signed-off-by: Stewart Addison <[email protected]> PR-URL: #34364 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: Michael Dawson <[email protected]>
1 parent d67649e commit fef957a

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

lib/internal/net.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const IPv6Reg = new RegExp('^(' +
2525
`(?:${v6Seg}:){2}(?:(:${v6Seg}){0,3}:${v4Str}|(:${v6Seg}){1,5}|:)|` +
2626
`(?:${v6Seg}:){1}(?:(:${v6Seg}){0,4}:${v4Str}|(:${v6Seg}){1,6}|:)|` +
2727
`(?::((?::${v6Seg}){0,5}:${v4Str}|(?::${v6Seg}){1,7}|:))` +
28-
')(%[0-9a-zA-Z]{1,})?$');
28+
')(%[0-9a-zA-Z-.:]{1,})?$');
2929

3030
function isIPv4(s) {
3131
return IPv4Reg.test(s);

test/parallel/test-net-isip.js

+3
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ assert.strictEqual(net.isIP('::2001:252:1:2008:6'), 6);
4646
assert.strictEqual(net.isIP('::2001:252:1:1.1.1.1'), 6);
4747
assert.strictEqual(net.isIP('::2001:252:1:255.255.255.255'), 6);
4848
assert.strictEqual(net.isIP('::2001:252:1:255.255.255.255.76'), 0);
49+
assert.strictEqual(net.isIP('fe80::2008%eth0'), 6);
50+
assert.strictEqual(net.isIP('fe80::2008%eth0.0'), 6);
51+
assert.strictEqual(net.isIP('fe80::2008%eth0@1'), 0);
4952
assert.strictEqual(net.isIP('::anything'), 0);
5053
assert.strictEqual(net.isIP('::1'), 6);
5154
assert.strictEqual(net.isIP('::'), 6);

0 commit comments

Comments
 (0)