Mercurial > hg > mercurial
changeset 968:2a8670c6afa9 Indore-2017.1.x
Prohibit newlines in repository url
author | Dmitry Neverov <dmitry.neverov@gmail.com> |
---|---|
date | Tue, 16 May 2017 15:46:24 +0200 |
parents | c0f3096cfff6 |
children | 0385d076bdf4 c5dc2c802e4b |
files | mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgRepo.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgRepoTest.java |
diffstat | 2 files changed, 32 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgRepo.java Tue May 16 11:28:27 2017 +0200 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgRepo.java Tue May 16 15:46:24 2017 +0200 @@ -242,6 +242,8 @@ } public void setDefaultPath(@NotNull String defaultPath) throws VcsException { + if (defaultPath.contains("\n") || defaultPath.contains("\r")) + throw new VcsException("Newline in repository url '" + defaultPath + "'"); try { File hgrc = new File(new File(myWorkingDir, ".hg"), "hgrc"); String content = "%include " + Constants.TEAMCITY_HG_CONFIG_FILE_NAME + "\n\n[paths]\ndefault = " + defaultPath;
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgRepoTest.java Tue May 16 11:28:27 2017 +0200 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgRepoTest.java Tue May 16 15:46:24 2017 +0200 @@ -16,19 +16,19 @@ package jetbrains.buildServer.buildTriggers.vcs.mercurial; -import com.intellij.openapi.diagnostic.Logger; -import jetbrains.buildServer.TempFiles; import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.AuthSettings; import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.TestCommandSettingsFactory; +import jetbrains.buildServer.util.TestFor; +import jetbrains.buildServer.vcs.VcsException; +import org.jetbrains.annotations.NotNull; +import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.io.File; import java.util.List; import static jetbrains.buildServer.buildTriggers.vcs.mercurial.Util.copyRepository; -import static org.testng.AssertJUnit.assertEquals; -import static org.testng.AssertJUnit.assertNull; -import static org.testng.AssertJUnit.assertTrue; +import static org.testng.AssertJUnit.*; @Test public class HgRepoTest extends BaseMercurialTestCase { @@ -58,4 +58,29 @@ assertEquals(1, changes.size()); } + + @DataProvider(name = "urlsWithNewLines") + public static Object[][] urlsWithNewLines() { + return new Object[][] { + new Object[] { "http://some.org/repo\n" }, + new Object[] { "http://some.org/repo\r" }, + new Object[] { "http://some.org/repo\n[section]" }, + new Object[] { "http://some.org/repo\r[section]" }, + new Object[] { "http://some.org/repo\r\n[section]" }, + }; + } + + @TestFor(issues = "TW-50043")//TW-50043 is about git, but hg suffers from the same problem + @Test(dataProvider = "urlsWithNewLines") + public void newline_in_url(@NotNull String url) throws Exception { + File repository = myTempFiles.createTempDir(); + HgRepo repo = new HgRepo(new TestCommandSettingsFactory(), repository, Util.getHgPath(), new AuthSettings()); + repo.init().call(); + try { + repo.setDefaultPath(url); + fail("no error for url '" + url + "'"); + } catch (VcsException e) { + //expected + } + } }