[ https://issues.apache.org/jira/browse/MIME4J-324?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Benoit Tellier updated MIME4J-324: ---------------------------------- Description: See https://issues.apache.org/jira/browse/JAMES-3901 {code:java} Content-Disposition: attachment; filename*=utf-8''4%P001!.DOC; filename="4%P001!.DOC" {code} Lead to: {code:java} java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - Error at index 0 in: \"P0\" at java.base/java.net.URLDecoder.decode(Unknown Source) at java.base/java.net.URLDecoder.decode(Unknown Source) at org.apache.james.mime4j.util.MimeParameterMapping.decodeParameterValue(MimeParameterMapping.java:55) at org.apache.james.mime4j.util.MimeParameterMapping.addParameter(MimeParameterMapping.java:39) at org.apache.james.mime4j.field.ContentDispositionFieldLenientImpl.parse(ContentDispositionFieldLenientImpl.java:165) at org.apache.james.mime4j.field.ContentDispositionFieldLenientImpl.getDispositionType(ContentDispositionFieldLenientImpl.java:72) at org.apache.james.mime4j.message.MaximalBodyDescriptor.getContentDispositionType(MaximalBodyDescriptor.java:183) at org.apache.james.mailbox.opensearch.json.MimePartParser.extractMimePartBodyDescription(MimePartParser.java:133) at org.apache.james.mailbox.opensearch.json.MimePartParser.manageBodyExtraction(MimePartParser.java:120) at org.apache.james.mailbox.opensearch.json.MimePartParser.processMimePart(MimePartParser.java:87) at org.apache.james.mailbox.opensearch.json.MimePartParser.parse(MimePartParser.java:69) at org.apache.james.mailbox.opensearch.json.IndexableMessage$Builder.instantiateIndexedMessage(IndexableMessage.java:111) at org.apache.james.mailbox.opensearch.json.IndexableMessage$Builder.build(IndexableMessage.java:76) at org.apache.james.mailbox.opensearch.json.MessageToOpenSearchJson.convertToJson(MessageToOpenSearchJson.java:74) at org.apache.james.mailbox.opensearch.events.OpenSearchListeningMessageSearchIndex.generateIndexedJson(OpenSearchListeningMessageSearchIndex.java:175) at org.apache.james.mailbox.opensearch.events.OpenSearchListeningMessageSearchIndex.add(OpenSearchListeningMessageSearchIndex.java:169) at org.apache.mailbox.tools.indexer.ReIndexerPerformer.lambda$index$23(ReIndexerPerformer.java:318) {code} Impact: the following message cannot be indexed... While in James we can do a better job at parsing the error... We need to understand if the given header is valid or not, and I would expect the Content-Dispotion error NOT to throw an error when a lenient parser is used - here leniency is not respected! was: See https://issues.apache.org/jira/browse/JAMES-3901 {code:java} Content-Disposition: attachment; filename*=utf-8''Javier%20Fernandez.DOC; filename="Javier Fernandez.DOC" {code} Lead to: {code:java} java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - Error at index 0 in: \"P0\" at java.base/java.net.URLDecoder.decode(Unknown Source) at java.base/java.net.URLDecoder.decode(Unknown Source) at org.apache.james.mime4j.util.MimeParameterMapping.decodeParameterValue(MimeParameterMapping.java:55) at org.apache.james.mime4j.util.MimeParameterMapping.addParameter(MimeParameterMapping.java:39) at org.apache.james.mime4j.field.ContentDispositionFieldLenientImpl.parse(ContentDispositionFieldLenientImpl.java:165) at org.apache.james.mime4j.field.ContentDispositionFieldLenientImpl.getDispositionType(ContentDispositionFieldLenientImpl.java:72) at org.apache.james.mime4j.message.MaximalBodyDescriptor.getContentDispositionType(MaximalBodyDescriptor.java:183) at org.apache.james.mailbox.opensearch.json.MimePartParser.extractMimePartBodyDescription(MimePartParser.java:133) at org.apache.james.mailbox.opensearch.json.MimePartParser.manageBodyExtraction(MimePartParser.java:120) at org.apache.james.mailbox.opensearch.json.MimePartParser.processMimePart(MimePartParser.java:87) at org.apache.james.mailbox.opensearch.json.MimePartParser.parse(MimePartParser.java:69) at org.apache.james.mailbox.opensearch.json.IndexableMessage$Builder.instantiateIndexedMessage(IndexableMessage.java:111) at org.apache.james.mailbox.opensearch.json.IndexableMessage$Builder.build(IndexableMessage.java:76) at org.apache.james.mailbox.opensearch.json.MessageToOpenSearchJson.convertToJson(MessageToOpenSearchJson.java:74) at org.apache.james.mailbox.opensearch.events.OpenSearchListeningMessageSearchIndex.generateIndexedJson(OpenSearchListeningMessageSearchIndex.java:175) at org.apache.james.mailbox.opensearch.events.OpenSearchListeningMessageSearchIndex.add(OpenSearchListeningMessageSearchIndex.java:169) at org.apache.mailbox.tools.indexer.ReIndexerPerformer.lambda$index$23(ReIndexerPerformer.java:318) {code} Impact: the following message cannot be indexed... While in James we can do a better job at parsing the error... We need to understand if the given header is valid or not, and I would expect the Content-Dispotion error NOT to throw an error when a lenient parser is used - here leniency is not respected! > URL decoding error propagated with Lenient Content-Disposition headers. > ----------------------------------------------------------------------- > > Key: MIME4J-324 > URL: https://issues.apache.org/jira/browse/MIME4J-324 > Project: James Mime4j > Issue Type: Bug > Components: dom > Reporter: Benoit Tellier > Priority: Major > > See https://issues.apache.org/jira/browse/JAMES-3901 > {code:java} > Content-Disposition: attachment; > filename*=utf-8''4%P001!.DOC; > filename="4%P001!.DOC" > {code} > Lead to: > {code:java} > java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in > escape (%) pattern - Error at index 0 in: \"P0\" > at java.base/java.net.URLDecoder.decode(Unknown Source) > at java.base/java.net.URLDecoder.decode(Unknown Source) > at > org.apache.james.mime4j.util.MimeParameterMapping.decodeParameterValue(MimeParameterMapping.java:55) > at > org.apache.james.mime4j.util.MimeParameterMapping.addParameter(MimeParameterMapping.java:39) > at > org.apache.james.mime4j.field.ContentDispositionFieldLenientImpl.parse(ContentDispositionFieldLenientImpl.java:165) > at > org.apache.james.mime4j.field.ContentDispositionFieldLenientImpl.getDispositionType(ContentDispositionFieldLenientImpl.java:72) > at > org.apache.james.mime4j.message.MaximalBodyDescriptor.getContentDispositionType(MaximalBodyDescriptor.java:183) > at > org.apache.james.mailbox.opensearch.json.MimePartParser.extractMimePartBodyDescription(MimePartParser.java:133) > at > org.apache.james.mailbox.opensearch.json.MimePartParser.manageBodyExtraction(MimePartParser.java:120) > at > org.apache.james.mailbox.opensearch.json.MimePartParser.processMimePart(MimePartParser.java:87) > at > org.apache.james.mailbox.opensearch.json.MimePartParser.parse(MimePartParser.java:69) > at > org.apache.james.mailbox.opensearch.json.IndexableMessage$Builder.instantiateIndexedMessage(IndexableMessage.java:111) > at > org.apache.james.mailbox.opensearch.json.IndexableMessage$Builder.build(IndexableMessage.java:76) > at > org.apache.james.mailbox.opensearch.json.MessageToOpenSearchJson.convertToJson(MessageToOpenSearchJson.java:74) > at > org.apache.james.mailbox.opensearch.events.OpenSearchListeningMessageSearchIndex.generateIndexedJson(OpenSearchListeningMessageSearchIndex.java:175) > at > org.apache.james.mailbox.opensearch.events.OpenSearchListeningMessageSearchIndex.add(OpenSearchListeningMessageSearchIndex.java:169) > at > org.apache.mailbox.tools.indexer.ReIndexerPerformer.lambda$index$23(ReIndexerPerformer.java:318) > {code} > Impact: the following message cannot be indexed... > While in James we can do a better job at parsing the error... We need to > understand if the given header is valid or not, and I would expect the > Content-Dispotion error NOT to throw an error when a lenient parser is used - > here leniency is not respected! -- This message was sent by Atlassian Jira (v8.20.10#820010)