diff options
author | Jan Bartel | 2013-05-20 07:18:28 +0000 |
---|---|---|
committer | Jan Bartel | 2013-05-20 07:18:28 +0000 |
commit | 259aac6463d0b3272fae78b4a7f20912d2843103 (patch) | |
tree | 2809f66f6a2ce5b00bda3d4a2ff05bfbf044acab /jetty-util | |
parent | 427c59e2f2515f6a025e5e021f7c34eea5504ffb (diff) | |
parent | 13c56e81f5ae7f4d0989945a4594cf88fd96e9e1 (diff) | |
download | org.eclipse.jetty.project-259aac6463d0b3272fae78b4a7f20912d2843103.tar.gz org.eclipse.jetty.project-259aac6463d0b3272fae78b4a7f20912d2843103.tar.xz org.eclipse.jetty.project-259aac6463d0b3272fae78b4a7f20912d2843103.zip |
Merge remote-tracking branch 'origin/jetty-7' into jetty-8
Conflicts:
jetty-servlets/src/main/java/org/eclipse/jetty/servlets/MultiPartFilter.java
Diffstat (limited to 'jetty-util')
-rw-r--r-- | jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStream.java | 9 | ||||
-rw-r--r-- | jetty-util/src/test/java/org/eclipse/jetty/util/MultiPartInputStreamTest.java | 21 |
2 files changed, 28 insertions, 2 deletions
diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStream.java b/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStream.java index 56539a6127..73e96c1249 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStream.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStream.java @@ -473,8 +473,13 @@ public class MultiPartInputStream _tmpDir.mkdirs(); String contentTypeBoundary = ""; - if (_contentType.indexOf("boundary=") >= 0) - contentTypeBoundary = QuotedStringTokenizer.unquote(value(_contentType.substring(_contentType.indexOf("boundary=")), true).trim()); + int bstart = _contentType.indexOf("boundary="); + if (bstart >= 0) + { + int bend = _contentType.indexOf(";", bstart); + bend = (bend < 0? _contentType.length(): bend); + contentTypeBoundary = QuotedStringTokenizer.unquote(value(_contentType.substring(bstart,bend), true).trim()); + } String boundary="--"+contentTypeBoundary; byte[] byteBoundary=(boundary+"--").getBytes(StringUtil.__ISO_8859_1); diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/MultiPartInputStreamTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/MultiPartInputStreamTest.java index 70069ddd7b..657714c931 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/MultiPartInputStreamTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/MultiPartInputStreamTest.java @@ -521,6 +521,27 @@ public class MultiPartInputStreamTest extends TestCase assertThat(baos.toString("UTF-8"), is("Other")); } + + public void testCharsetEncoding () throws Exception + { + String contentType = "multipart/form-data; boundary=TheBoundary; charset=ISO-8859-1"; + String str = "--TheBoundary\r"+ + "content-disposition: form-data; name=\"field1\"\r"+ + "\r"+ + "\nJoe Blow\n"+ + "\r"+ + "--TheBoundary--\r"; + + MultipartConfigElement config = new MultipartConfigElement(_dirname, 1024, 3072, 50); + MultiPartInputStream mpis = new MultiPartInputStream(new ByteArrayInputStream(str.getBytes()), + contentType, + config, + _tmpDir); + mpis.setDeleteOnExit(true); + Collection<Part> parts = mpis.getParts(); + assertThat(parts.size(), is(1)); + } + public void testBadlyEncodedFilename() throws Exception { |