From a1e54d6fb72ef0e0d3aab9ed2bf88d60a4a419d9 Mon Sep 17 00:00:00 2001 From: Evan Lucas Date: Mon, 12 Jan 2015 00:13:17 -0600 Subject: [PATCH] url: fix parsing of ssh urls Fix regression introduced in 61204720361824881aefd64f5bccda7d7be6617a that broke parsing of some ssh: urls. An example url is ssh://git@github.com:npm/npm.git PR-URL: https://github.com/iojs/io.js/pull/299 Reviewed-By: Ben Noordhuis --- lib/url.js | 5 ++--- test/parallel/test-url.js | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/lib/url.js b/lib/url.js index f221958..80c34b5 100644 --- a/lib/url.js +++ b/lib/url.js @@ -72,9 +72,8 @@ var protocolPattern = /^([a-z0-9.+-]+:)/i, nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), hostEndingChars = ['/', '?', '#'], hostnameMaxLen = 255, - hostnamePatternString = '[^' + nonHostChars.join('') + ']{0,63}', - hostnamePartPattern = new RegExp('^' + hostnamePatternString + '$'), - hostnamePartStart = new RegExp('^(' + hostnamePatternString + ')(.*)$'), + hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, + hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, // protocols that can allow "unsafe" and "unwise" chars. unsafeProtocol = { 'javascript': true, diff --git a/test/parallel/test-url.js b/test/parallel/test-url.js index f12a00d..9eaaf03 100644 --- a/test/parallel/test-url.js +++ b/test/parallel/test-url.js @@ -857,6 +857,22 @@ var parseTests = { pathname: '%0D%0Ad/e', path: '%0D%0Ad/e?f', href: 'http://a%0D%22%20%09%0A%3C\'b:b@c/%0D%0Ad/e?f' + }, + + // git urls used by npm + 'git+ssh://git@github.com:npm/npm': { + protocol: 'git+ssh:', + slashes: true, + auth: 'git', + host: 'github.com', + port: null, + hostname: 'github.com', + hash: null, + search: null, + query: null, + pathname: '/:npm/npm', + path: '/:npm/npm', + href: 'git+ssh://git@github.com/:npm/npm' } }; -- 2.7.4