diff options
| author | jmestwa-coder <jmestwa@gmail.com> | 2026-06-21 16:44:54 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-06-21 16:44:54 +0300 |
| commit | dd156cba2519e3e8a84bc2cfff066f37e751a9ca (patch) | |
| tree | cfea2b6aaee059904caf8ec5e111a29479087a13 /core/src/test/java/com | |
| parent | 5b4f88f8e2971219df30b7467500d5d249fd4b6b (diff) | |
| download | zxing-dd156cba2519e3e8a84bc2cfff066f37e751a9ca.tar.xz | |
fix catastrophic backtracking in email domain regex (#2099)
Diffstat (limited to 'core/src/test/java/com')
| -rw-r--r-- | core/src/test/java/com/google/zxing/client/result/EmailAddressParsedResultTestCase.java | 11 |
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); |
