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:47 UTC

[james-mime4j] branch master updated (26c8c38f -> 15d87387)

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/james-mime4j.git


    from 26c8c38f [RELEASE] Bump changelog, readme, to 0.8.9 (#83)
     new 8f72ae5a MIME4J-324 Handle URL parsing exception in LenientContentDispositionField
     new 15d87387 MIME4J-324 Avoid an extra copy of ContentDispositionFieldLenientImpl parameters

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/james/mime4j/util/MimeParameterMapping.java     |  9 ++++++---
 .../james/mime4j/field/ContentDispositionFieldLenientImpl.java |  8 +++-----
 .../apache/james/mime4j/field/ContentDispositionFieldTest.java |  2 +-
 .../james/mime4j/field/LenientContentDispositionFieldTest.java | 10 ++++++++++
 4 files changed, 20 insertions(+), 9 deletions(-)


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


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

Posted by bt...@apache.org.
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


[james-mime4j] 02/02: MIME4J-324 Avoid an extra copy of ContentDispositionFieldLenientImpl parameters

Posted by bt...@apache.org.
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 15d873873db4eceb0a0057cc1e46aa71fce155f8
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Apr 18 09:21:12 2023 +0700

    MIME4J-324 Avoid an extra copy of ContentDispositionFieldLenientImpl parameters
---
 .../java/org/apache/james/mime4j/util/MimeParameterMapping.java   | 4 ++++
 .../james/mime4j/field/ContentDispositionFieldLenientImpl.java    | 8 +++-----
 2 files changed, 7 insertions(+), 5 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 a3ffd44e..1335310e 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
@@ -30,6 +30,10 @@ public class MimeParameterMapping {
         return parameters;
     }
 
+    public String get(String name) {
+        return parameters.get(name);
+    }
+
     public void addParameter(String name, String value) {
         String key = removeSectionFromName(name).toLowerCase();
         if (parameters.containsKey(key)) {
diff --git a/dom/src/main/java/org/apache/james/mime4j/field/ContentDispositionFieldLenientImpl.java b/dom/src/main/java/org/apache/james/mime4j/field/ContentDispositionFieldLenientImpl.java
index 6abc127b..1291fbd0 100644
--- a/dom/src/main/java/org/apache/james/mime4j/field/ContentDispositionFieldLenientImpl.java
+++ b/dom/src/main/java/org/apache/james/mime4j/field/ContentDispositionFieldLenientImpl.java
@@ -51,7 +51,7 @@ public class ContentDispositionFieldLenientImpl extends AbstractField implements
     private boolean parsed = false;
 
     private String dispositionType = "";
-    private final Map<String, String> parameters = new HashMap<String, String>();
+    private final MimeParameterMapping mapping = new MimeParameterMapping();
 
     private boolean creationDateParsed;
     private Date creationDate;
@@ -78,14 +78,14 @@ public class ContentDispositionFieldLenientImpl extends AbstractField implements
         if (!parsed) {
             parse();
         }
-        return parameters.get(name);
+        return mapping.get(name);
     }
 
     public Map<String, String> getParameters() {
         if (!parsed) {
             parse();
         }
-        return Collections.unmodifiableMap(parameters);
+        return Collections.unmodifiableMap(mapping.getParameters());
     }
 
     public boolean isDispositionType(String dispositionType) {
@@ -160,11 +160,9 @@ public class ContentDispositionFieldLenientImpl extends AbstractField implements
         } else {
             dispositionType = null;
         }
-        MimeParameterMapping mapping = new MimeParameterMapping();
         for (NameValuePair pair : body.getParams()) {
             mapping.addParameter(pair.getName(), pair.getValue());
         }
-        parameters.putAll(mapping.getParameters());
     }
 
     private Date parseDate(final String paramName) {


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org