mirror of
https://github.com/zxing/zxing.git
synced 2025-02-21 02:55:27 -08:00
Issue 897 tighten URI definition
git-svn-id: https://zxing.googlecode.com/svn/trunk@1851 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
parent
91b55eb5e5
commit
05455c7b68
|
@ -49,17 +49,25 @@ final class URIResultParser extends ResultParser {
|
||||||
* need to know when a string is obviously not a URI.
|
* need to know when a string is obviously not a URI.
|
||||||
*/
|
*/
|
||||||
static boolean isBasicallyValidURI(String uri) {
|
static boolean isBasicallyValidURI(String uri) {
|
||||||
if (uri == null || uri.indexOf(' ') >= 0 || uri.indexOf('\n') >= 0) {
|
if (uri == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
int period = -1;
|
||||||
|
int colon = -1;
|
||||||
|
int length = uri.length();
|
||||||
|
for (int i = length - 1; i >= 0; i--) {
|
||||||
|
char c = uri.charAt(i);
|
||||||
|
if (c <= ' ') { // covers space, newline, and more
|
||||||
|
return false;
|
||||||
|
} else if (c == '.') {
|
||||||
|
period = i;
|
||||||
|
} else if (c == ':') {
|
||||||
|
colon = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
// Look for period in a domain but followed by at least a two-char TLD
|
// Look for period in a domain but followed by at least a two-char TLD
|
||||||
// Forget strings that don't have a valid-looking protocol
|
// Forget strings that don't have a valid-looking protocol
|
||||||
int period = uri.indexOf('.');
|
if (period >= uri.length() - 2 || (period < 0 && colon < 0)) {
|
||||||
if (period >= uri.length() - 2) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
int colon = uri.indexOf(':');
|
|
||||||
if (period < 0 && colon < 0) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (colon >= 0) {
|
if (colon >= 0) {
|
||||||
|
|
|
@ -65,6 +65,15 @@ public final class URIParsedResultTestCase extends Assert {
|
||||||
assertEquals(text, result.getDisplayResult());
|
assertEquals(text, result.getDisplayResult());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGarbage2() {
|
||||||
|
String text = "DEA\u0003\u0019M\u0006\u0000\bå\u0000‡HO\u0000X$\u0001\u0000\u001Fwfc\u0007!þ“˜\u0013\u0013¾Z{ùÎÝڗZ§¨+y_zbñk\u00117¸\u000E†Ü\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000£.ux";
|
||||||
|
Result fakeResult = new Result(text, null, null, BarcodeFormat.QR_CODE);
|
||||||
|
ParsedResult result = ResultParser.parseResult(fakeResult);
|
||||||
|
assertSame(ParsedResultType.TEXT, result.getType());
|
||||||
|
assertEquals(text, result.getDisplayResult());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsPossiblyMalicious() {
|
public void testIsPossiblyMalicious() {
|
||||||
doTestIsPossiblyMalicious("http://google.com", false);
|
doTestIsPossiblyMalicious("http://google.com", false);
|
||||||
|
|
Loading…
Reference in a new issue