diff options
author | Christian Halstrick <christian.halstrick@sap.com> | 2010-10-06 15:43:42 +0200 |
---|---|---|
committer | Matthias Sohn <matthias.sohn@sap.com> | 2010-10-08 11:08:12 +0200 |
commit | 213609520351bc26beab887dd7f41f09b0b70d89 (patch) | |
tree | 06a30ebf3f34ceae8ad5ae1d909fefec2ce67b6a | |
parent | cee08c30273c18d0b36ee3659fbca1b3b8451d24 (diff) | |
download | jgit-213609520351bc26beab887dd7f41f09b0b70d89.tar.gz jgit-213609520351bc26beab887dd7f41f09b0b70d89.zip |
Fixed URI regexp regarding user/password part
The regular expression which should handle the
user/password part in an URI was potentially
processing too many chars. This led to problems
when user/pwd and port was specified
Change-Id: I87db02494c4b367283e1d00437b1c06d2c8fdd28
Signed-off-by: Christian Halstrick <christian.halstrick@sap.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java | 23 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java | 3 |
2 files changed, 25 insertions, 1 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java index 9c4c11cd25..88651b75e6 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java @@ -424,4 +424,27 @@ public class URIishTest extends TestCase { assertEquals("c", humanishName); } + public void testUserPasswordAndPort() throws URISyntaxException { + String str = "http://user:secret@host.xy:80/some/path"; + URIish u = new URIish(str); + assertEquals("http", u.getScheme()); + assertTrue(u.isRemote()); + assertEquals("/some/path", u.getPath()); + assertEquals("host.xy", u.getHost()); + assertEquals(80, u.getPort()); + assertEquals("user", u.getUser()); + assertEquals("secret", u.getPass()); + assertEquals(u, new URIish(str)); + + str = "http://user:secret@pass@host.xy:80/some/path"; + u = new URIish(str); + assertEquals("http", u.getScheme()); + assertTrue(u.isRemote()); + assertEquals("/some/path", u.getPath()); + assertEquals("host.xy", u.getHost()); + assertEquals(80, u.getPort()); + assertEquals("user", u.getUser()); + assertEquals("secret@pass", u.getPass()); + assertEquals(u, new URIish(str)); + } } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java index 44ba632d12..3c044fe675 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java @@ -2,6 +2,7 @@ * Copyright (C) 2009, Mykola Nikishov <mn@mn.com.ua> * Copyright (C) 2008, Robin Rosenberg <robin.rosenberg@dewire.com> * Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org> + * Copyright (C) 2010, Christian Halstrick <christian.halstrick@sap.com> * and other copyright owners as documented in the project's IP log. * * This program and the accompanying materials are made available @@ -74,7 +75,7 @@ public class URIish implements Serializable { * capturing groups: the first containing the user and the second containing * the password */ - private static final String OPT_USER_PWD_P = "(?:([^/]+?)(?::([^/]+?))?@)?"; + private static final String OPT_USER_PWD_P = "(?:([^/:@]+)(?::([^/]+))?@)?"; /** * Part of a pattern which matches the optional host part of URIs. Defines |