You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mime4j-dev@james.apache.org by "Benoit Tellier (Jira)" <mi...@james.apache.org> on 2023/04/18 01:53:00 UTC
[jira] [Updated] (MIME4J-324) URL decoding error propagated with Lenient Content-Disposition headers.
[ 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)