summaryrefslogtreecommitdiff
path: root/core/src/test/java
diff options
context:
space:
mode:
authorjmestwa-coder <jmestwa@gmail.com>2026-06-21 16:44:54 +0300
committerGitHub <noreply@github.com>2026-06-21 16:44:54 +0300
commitdd156cba2519e3e8a84bc2cfff066f37e751a9ca (patch)
treecfea2b6aaee059904caf8ec5e111a29479087a13 /core/src/test/java
parent5b4f88f8e2971219df30b7467500d5d249fd4b6b (diff)
downloadzxing-dd156cba2519e3e8a84bc2cfff066f37e751a9ca.tar.xz
fix catastrophic backtracking in email domain regex (#2099)
Diffstat (limited to 'core/src/test/java')
-rw-r--r--core/src/test/java/com/google/zxing/client/result/EmailAddressParsedResultTestCase.java11
1 files changed, 11 insertions, 0 deletions
diff --git a/core/src/test/java/com/google/zxing/client/result/EmailAddressParsedResultTestCase.java b/core/src/test/java/com/google/zxing/client/result/EmailAddressParsedResultTestCase.java
index ea79c4272..d900d1ddc 100644
--- a/core/src/test/java/com/google/zxing/client/result/EmailAddressParsedResultTestCase.java
+++ b/core/src/test/java/com/google/zxing/client/result/EmailAddressParsedResultTestCase.java
@@ -52,6 +52,17 @@ public final class EmailAddressParsedResultTestCase extends Assert {
assertTrue(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("建設省.aZ456@Ab-cd9Z.co"));
}
+ // A long run of address characters that never completes a valid domain must be rejected
+ // quickly; the previous pattern backtracked super-linearly on such input.
+ @Test(timeout = 5000L)
+ public void testNoCatastrophicBacktracking() {
+ StringBuilder sb = new StringBuilder("x@");
+ for (int i = 0; i < 5000; i++) {
+ sb.append('a');
+ }
+ assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress(sb.toString()));
+ }
+
@Test
public void testEmailAddress() {
doTest("srowen@example.org", "srowen@example.org", null, null);