diff --git a/core/src/com/google/zxing/client/result/URIResultParser.java b/core/src/com/google/zxing/client/result/URIResultParser.java index 028936358..e6678e249 100644 --- a/core/src/com/google/zxing/client/result/URIResultParser.java +++ b/core/src/com/google/zxing/client/result/URIResultParser.java @@ -32,7 +32,7 @@ public final class URIResultParser extends ResultParser { "(:\\d{1,5})?" + // maybe port "(/|\\?|$)"; // query, path or nothing private static final Pattern URL_WITH_PROTOCOL_PATTERN = Pattern.compile( - "[a-zA-Z0-9]{2,}://" + // protocol + "[a-zA-Z0-9]{2,}:(/)*" + // protocol "[a-zA-Z0-9\\-]+(\\.[a-zA-Z0-9\\-]+)*" + // host name elements PATTERN_END); private static final Pattern URL_WITHOUT_PROTOCOL_PATTERN = Pattern.compile( diff --git a/core/test/src/com/google/zxing/client/result/URIParsedResultTestCase.java b/core/test/src/com/google/zxing/client/result/URIParsedResultTestCase.java index 1c4aa87ba..ef6fed581 100644 --- a/core/test/src/com/google/zxing/client/result/URIParsedResultTestCase.java +++ b/core/test/src/com/google/zxing/client/result/URIParsedResultTestCase.java @@ -88,6 +88,11 @@ public final class URIParsedResultTestCase extends Assert { doTestIsPossiblyMalicious("http://google.com/@@", false); } + @Test + public void testExotic() { + doTest("bitcoin:mySD89iqpmptrK3PhHFW9fa7BXiP7ANy3Y", "bitcoin:mySD89iqpmptrK3PhHFW9fa7BXiP7ANy3Y", null); + } + private static void doTest(String contents, String uri, String title) { Result fakeResult = new Result(contents, null, null, BarcodeFormat.QR_CODE); ParsedResult result = ResultParser.parseResult(fakeResult);