diff --git a/spring-web/src/main/java/org/springframework/web/filter/HttpPutFormContentFilter.java b/spring-web/src/main/java/org/springframework/web/filter/HttpPutFormContentFilter.java index 74982a361c..eb20c5fc5e 100644 --- a/spring-web/src/main/java/org/springframework/web/filter/HttpPutFormContentFilter.java +++ b/spring-web/src/main/java/org/springframework/web/filter/HttpPutFormContentFilter.java @@ -87,14 +87,18 @@ public class HttpPutFormContentFilter extends OncePerRequestFilter { else { filterChain.doFilter(request, response); } - } private boolean isFormContentType(HttpServletRequest request) { String contentType = request.getContentType(); if (contentType != null) { - MediaType mediaType = MediaType.parseMediaType(contentType); - return (MediaType.APPLICATION_FORM_URLENCODED.includes(mediaType)); + try { + MediaType mediaType = MediaType.parseMediaType(contentType); + return (MediaType.APPLICATION_FORM_URLENCODED.includes(mediaType)); + } + catch (IllegalArgumentException ex) { + return false; + } } else { return false; diff --git a/spring-web/src/test/java/org/springframework/web/filter/HttpPutFormContentFilterTests.java b/spring-web/src/test/java/org/springframework/web/filter/HttpPutFormContentFilterTests.java index d73cc484e8..21a3516f12 100644 --- a/spring-web/src/test/java/org/springframework/web/filter/HttpPutFormContentFilterTests.java +++ b/spring-web/src/test/java/org/springframework/web/filter/HttpPutFormContentFilterTests.java @@ -87,6 +87,15 @@ public class HttpPutFormContentFilterTests { } } + @Test + public void invalidMediaType() throws Exception { + request.setContent("".getBytes("ISO-8859-1")); + request.setContentType("foo"); + filterChain = new MockFilterChain(); + filter.doFilter(request, response, filterChain); + assertSame(request, filterChain.getRequest()); + } + @Test public void getParameter() throws Exception { request.setContent("name=value".getBytes("ISO-8859-1"));