From 3c8d6103832eec3bc06029dd2532f06df717431f Mon Sep 17 00:00:00 2001 From: "Thiago H. de Paula Figueiredo" Date: Sun, 17 Apr 2022 23:50:16 -0300 Subject: [PATCH] Tweaking ContentType's parser regular expression. --- .../java/org/apache/tapestry5/root/ContentTypeTest.java | 7 +++++++ .../main/java/org/apache/tapestry5/http/ContentType.java | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/root/ContentTypeTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/root/ContentTypeTest.java index 5be6bda94b..00842acad3 100644 --- a/tapestry-core/src/test/java/org/apache/tapestry5/root/ContentTypeTest.java +++ b/tapestry-core/src/test/java/org/apache/tapestry5/root/ContentTypeTest.java @@ -154,4 +154,11 @@ public void add_charset() throws Exception assertEquals(base.toString(), "text/html"); assertEquals(charset.toString(), "text/html;charset=utf-8"); } + + @Test(timeOut = 100, expectedExceptions = IllegalArgumentException.class) + public void constructor_timeout() throws Exception + { + new ContentType("a/a;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;a=:;"); + } + } diff --git a/tapestry-http/src/main/java/org/apache/tapestry5/http/ContentType.java b/tapestry-http/src/main/java/org/apache/tapestry5/http/ContentType.java index bf5da4a242..bf1b75cf84 100644 --- a/tapestry-http/src/main/java/org/apache/tapestry5/http/ContentType.java +++ b/tapestry-http/src/main/java/org/apache/tapestry5/http/ContentType.java @@ -39,7 +39,7 @@ public final class ContentType private final Map parameters; - private static final Pattern PATTERN = Pattern.compile("^(.+)/([^;]+)(;(.+=[^;]+))*$"); + private static final Pattern PATTERN = Pattern.compile("^(.+)/([^;]+)(;(.+=[^;]+)){0,5}$"); /** * Creates a new content type from the argument. The format of the argument has to be basetype/subtype(;key=value)*