MIME4J-324 Handle URL parsing exception in LenientContentDispositionField
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 1e98ac4..a3ffd44 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 @@
         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 13326e2..fb1fb53 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 @@
                 " \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 67df4c5..1031da7 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 @@
                 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");
+    }
+
 }