From f953a35e9a1f279ca038955243c07fd84fb6ae23 Mon Sep 17 00:00:00 2001 From: Ketan Padegaonkar Date: Thu, 19 May 2011 13:08:26 +0530 Subject: Fix NPE in URIish when parsing an empty URI Change-Id: Id1c42dc9843f62c581b9904b02150de53cf7777c Signed-off-by: Chris Aniszczyk --- .../tst/org/eclipse/jgit/transport/URIishTest.java | 20 ++++++++++++++++++++ .../src/org/eclipse/jgit/transport/URIish.java | 5 +++++ .../src/org/eclipse/jgit/util/StringUtils.java | 11 +++++++++++ 3 files changed, 36 insertions(+) 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 01d3820184..9b4ebf90d8 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 @@ -62,6 +62,26 @@ public class URIishTest { private static final String GIT_SCHEME = "git://"; + @Test + public void shouldRaiseErrorOnEmptyURI() throws Exception { + try { + new URIish(""); + fail("expecting an exception"); + } catch (URISyntaxException e) { + // expected + } + } + + @Test + public void shouldRaiseErrorOnNullURI() throws Exception { + try { + new URIish((String) null); + fail("expecting an exception"); + } catch (URISyntaxException e) { + // expected + } + } + @Test public void testUnixFile() throws Exception { final String str = "/home/m y"; 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 1c9397922a..8fe7b2aa51 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java @@ -55,6 +55,7 @@ import java.util.regex.Pattern; import org.eclipse.jgit.JGitText; import org.eclipse.jgit.lib.Constants; +import org.eclipse.jgit.util.StringUtils; /** * This URI like construct used for referencing Git archives over the net, as @@ -193,6 +194,10 @@ public class URIish implements Serializable { * @throws URISyntaxException */ public URIish(String s) throws URISyntaxException { + if (StringUtils.isEmptyOrNull(s)) { + throw new URISyntaxException("The uri was empty or null", + JGitText.get().cannotParseGitURIish); + } Matcher matcher = SINGLE_SLASH_FILE_URI.matcher(s); if (matcher.matches()) { scheme = matcher.group(1); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java index 59f3d83ccf..5e43b26931 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java @@ -222,4 +222,15 @@ public final class StringUtils { private StringUtils() { // Do not create instances } + + /** + * Test if a string is empty or null. + * + * @param stringValue + * the string to check + * @return true if the string is null or empty + */ + public static boolean isEmptyOrNull(String stringValue) { + return stringValue == null || stringValue.length() == 0; + } } -- cgit v1.2.3