Mercurial > hg > mercurial
changeset 320:568ce42b1e9d Eluru-6.5.x
TW-18262 escape ampersand in the password
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Thu, 15 Sep 2011 12:25:37 +0400 |
parents | 916c0967d63d |
children | 6667765025c6 ef091b782acc |
files | mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SettingsTest.java |
diffstat | 2 files changed, 10 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java Thu Sep 15 11:40:23 2011 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java Thu Sep 15 12:25:37 2011 +0400 @@ -177,7 +177,9 @@ String escapedURI = uri.toASCIIString(); int from = "http://".length(); int to = escapedURI.indexOf("somewhere.com") - 1; - return escapedURI.substring(from, to); + String escapedUserInfo = escapedURI.substring(from, to); + escapedUserInfo = escapedUserInfo.replaceAll("&", "%26"); + return escapedUserInfo; } catch (URISyntaxException e) { assert false; }
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SettingsTest.java Thu Sep 15 11:40:23 2011 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SettingsTest.java Thu Sep 15 12:25:37 2011 +0400 @@ -107,6 +107,13 @@ assertTrue(settings.isUncompressedTransfer()); } + //TW-18262 + public void ampersand_in_password() { + VcsRootImpl vcsRoot = createVcsRoot("http://some.org/path", "user", "m&n"); + Settings settings = new Settings(vcsRoot); + assertEquals("http://user:m%26n@some.org/path", settings.getRepositoryUrl()); + } + private VcsRootImpl createVcsRoot(String url) { return createVcsRoot(url, "user", "pwd"); }