浏览代码

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>
tags/v0.10.1
Christian Halstrick 13 年前
父节点
当前提交
2136095203

+ 23
- 0
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));
}
}

+ 2
- 1
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

正在加载...
取消
保存