You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2023/04/19 01:25:48 UTC

[james-mime4j] 01/02: MIME4J-324 Handle URL parsing exception in LenientContentDispositionField

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 <bt...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org