Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Bartel2013-05-20 07:18:28 +0000
committerJan Bartel2013-05-20 07:18:28 +0000
commit259aac6463d0b3272fae78b4a7f20912d2843103 (patch)
tree2809f66f6a2ce5b00bda3d4a2ff05bfbf044acab /jetty-util
parent427c59e2f2515f6a025e5e021f7c34eea5504ffb (diff)
parent13c56e81f5ae7f4d0989945a4594cf88fd96e9e1 (diff)
downloadorg.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.java9
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/MultiPartInputStreamTest.java21
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
{

Back to the top