From 2ff3d53962c1249dccfb493eb46f12e30612de05 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Mon, 10 Sep 2012 20:06:10 -0400 Subject: [PATCH] Ignore parse errors in HttpPutFormContentFilter Errors when parsing the request content-type, in order to find out if the request has form content, are translated to false. Issue: SPR-9769 --- .../web/filter/HttpPutFormContentFilter.java | 10 +++++++--- .../web/filter/HttpPutFormContentFilterTests.java | 9 +++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) 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"));