This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-mime4j.git
commit 8f72ae5ae442427f84e561793396f3b52eb09f48 Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Tue Apr 18 09:20:39 2023 +0700 MIME4J-324 Handle URL parsing exception in LenientContentDispositionField --- .../org/apache/james/mime4j/util/MimeParameterMapping.java | 5 ++--- .../apache/james/mime4j/field/ContentDispositionFieldTest.java | 2 +- .../james/mime4j/field/LenientContentDispositionFieldTest.java | 10 ++++++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/apache/james/mime4j/util/MimeParameterMapping.java b/core/src/main/java/org/apache/james/mime4j/util/MimeParameterMapping.java index 1e98ac4d..a3ffd44e 100644 --- a/core/src/main/java/org/apache/james/mime4j/util/MimeParameterMapping.java +++ b/core/src/main/java/org/apache/james/mime4j/util/MimeParameterMapping.java @@ -19,7 +19,6 @@ package org.apache.james.mime4j.util; -import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.Map; @@ -54,9 +53,9 @@ public class MimeParameterMapping { try { return java.net.URLDecoder.decode(fileName, charset); } - catch (UnsupportedEncodingException ignore) { + catch (Exception ignore) { + return fileName; } - return MimeUtil.unscrambleHeaderValue(value); } private String removeSectionFromName(String parameterName) { diff --git a/dom/src/test/java/org/apache/james/mime4j/field/ContentDispositionFieldTest.java b/dom/src/test/java/org/apache/james/mime4j/field/ContentDispositionFieldTest.java index 13326e24..fb1fb534 100644 --- a/dom/src/test/java/org/apache/james/mime4j/field/ContentDispositionFieldTest.java +++ b/dom/src/test/java/org/apache/james/mime4j/field/ContentDispositionFieldTest.java @@ -138,7 +138,7 @@ public class ContentDispositionFieldTest extends TestCase { " \nfilename*=%s\"", fileName); ContentDispositionField f = parse(fileNameString); String name = f.getFilename(); - assertEquals(getMessage(f), fileName, name); + assertEquals(getMessage(f), "%D8%AF%D9%8A%D9%86%D8%A7%D8%B5%D9%88%D8%B1%2E%6F%64%74", name); } public void testFileNameWithInitialSection() throws MimeException { diff --git a/dom/src/test/java/org/apache/james/mime4j/field/LenientContentDispositionFieldTest.java b/dom/src/test/java/org/apache/james/mime4j/field/LenientContentDispositionFieldTest.java index 67df4c5c..1031da71 100644 --- a/dom/src/test/java/org/apache/james/mime4j/field/LenientContentDispositionFieldTest.java +++ b/dom/src/test/java/org/apache/james/mime4j/field/LenientContentDispositionFieldTest.java @@ -197,4 +197,14 @@ public class LenientContentDispositionFieldTest { f.getFilename()); } + @Test + public void testBadEncodingFilename() throws MimeException { + ContentDispositionField f = parse("Content-Disposition: attachment; \n" + + " filename*=utf-8''4%P001!.DOC;\n" + + " filename=\"4%P001!.DOC\""); + + Assert.assertEquals(f.getDispositionType(), "attachment"); + Assert.assertEquals(f.getFilename(), "4%P001!.DOC4%P001!.DOC"); + } + } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org