Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
2.7.0
-
JSE 1.6
Description
The method "determineContentType" in the MailBinding class may drop characters from the end of the Content-Type header (specifically ending quotes).
Example:
Take the following SMINE enveloped data content type:
Content-Type: application/pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"
When an incoming Exchange is processed by the mail Component with the above content type header, the resulting content type after the determineContentType is application/pkcs7-mime; smime-type=enveloped-data; name="smime.p7m (note the ending quote). This results in a parsing error later on the processing chain. The following simple unit test demonstrates the issue as it fails on the assertEquals call.
-----------------------------------------------------------------------------------------------------
package org.apache.camel.component.mail; import org.apache.camel.CamelContext; import org.apache.camel.impl.DefaultExchange; import org.junit.Test; import static org.junit.Assert.assertEquals; public class ContentTypeTest { @Test public void testDetermineContentType_endingWithQuotes_assertContentMatches() { final String contentType = "application/pkcs7-mime; smime-type=enveloped-data; name=\"smime.p7m\""; final MailConfiguration configuration = new MailConfiguration(); final MailBinding binding = new MailBinding(); final DefaultExchange exchange = new DefaultExchange((CamelContext)null); exchange.getIn().setHeader("Content-Type", contentType); String determinedType = binding.determineContentType(configuration, exchange); assertEquals(contentType, determinedType); } }