Camel
  1. Camel
  2. CAMEL-4083

MailBinding may drop characters from content type when using determineContentType option

    Details

      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);
          }
      }
      

        Activity

        Hide
        Claus Ibsen added a comment -

        Yeah the logic seems a bit misleading. It mistakenly looks for charset, without checking that the key is charset=xxx in the Content-Type.

        Show
        Claus Ibsen added a comment - Yeah the logic seems a bit misleading. It mistakenly looks for charset, without checking that the key is charset=xxx in the Content-Type.

          People

          • Assignee:
            Claus Ibsen
            Reporter:
            Greg Meyer
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development