[ 
https://issues.apache.org/jira/browse/AXIOM-467?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14546460#comment-14546460
 ] 

Andreas Veithen commented on AXIOM-467:
---------------------------------------

That's not what I would call a real world example. It's a specially crafted to 
trigger the issue. In fact, Axiom <= 1.2.12 rejects messages that use CR 
instead of CRLF in the MIME headers. To trigger a backward incompatibility 
issue, the message therefore needs to use CRLF in the headers and CR in the 
content. It's not impossible that there are real world systems that would 
produce such (non conforming) messages, but I think it's very unlikely, in 
particular considering that using quoted-printable encoding in SwA or MTOM 
messages is already very rare.

> Cannot read "quoted-printable" encoded data from MIME part
> ----------------------------------------------------------
>
>                 Key: AXIOM-467
>                 URL: https://issues.apache.org/jira/browse/AXIOM-467
>             Project: Axiom
>          Issue Type: Bug
>          Components: API
>    Affects Versions: 1.2.13, 1.2.14
>            Reporter: Detelin Hadzhiev
>             Fix For: 1.2.16
>
>         Attachments: MtomInvalidQPAttachment.txt, axiom-1.2.13.patch, 
> axiom_1.2.7.patch
>
>
> Processing "quoted-printable" encoded data in the axiom v.1.2.13 seems to be 
> backward incompatible as it was in the axiom. 1.2.7.
> I provided one and the same test case which illustrates how the test is 
> working in the axiom 1.2.7 but not in 1.2.13.
> In the axiom 1.2.13 I got the following exception:
> org.apache.axiom.om.OMException: org.apache.axiom.ext.io.StreamCopyException: 
> Error reading from source
>       at 
> org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:153)
>       at org.apache.axiom.attachments.PartImpl.fetch(PartImpl.java:176)
>       at org.apache.axiom.attachments.PartImpl.getContent(PartImpl.java:149)
>       at 
> org.apache.axiom.attachments.PartImpl.getInputStream(PartImpl.java:224)
>       at 
> org.apache.axiom.attachments.PartDataSource.getInputStream(PartDataSource.java:44)
>       at javax.activation.DataHandler.getInputStream(DataHandler.java:238)
>       at 
> org.apache.axiom.attachments.QuotedPrintablePartTest.testReadStreamFromPart(QuotedPrintablePartTest.java:38)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:601)
>       at junit.framework.TestCase.runTest(TestCase.java:168)
>       at junit.framework.TestCase.runBare(TestCase.java:134)
>       at junit.framework.TestResult$1.protect(TestResult.java:110)
>       at junit.framework.TestResult.runProtected(TestResult.java:128)
>       at junit.framework.TestResult.run(TestResult.java:113)
>       at junit.framework.TestCase.run(TestCase.java:124)
>       at junit.framework.TestSuite.runTest(TestSuite.java:243)
>       at junit.framework.TestSuite.run(TestSuite.java:238)
>       at 
> org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:131)
>       at 
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
> Caused by: org.apache.axiom.ext.io.StreamCopyException: Error reading from 
> source
>       at 
> org.apache.axiom.attachments.utils.BAAOutputStream.readFrom(BAAOutputStream.java:114)
>       at 
> org.apache.axiom.attachments.impl.BufferUtils.inputStream2OutputStream(BufferUtils.java:76)
>       at 
> org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:119)
>       ... 24 more
> Caused by: java.io.IOException: Found LF without CR
>       at 
> org.apache.james.mime4j.codec.QuotedPrintableInputStream.read0(QuotedPrintableInputStream.java:195)
>       at 
> org.apache.james.mime4j.codec.QuotedPrintableInputStream.read(QuotedPrintableInputStream.java:317)
>       at 
> org.apache.axiom.attachments.utils.BAAOutputStream.readFrom(BAAOutputStream.java:112)
>       ... 26 more
> The root cause of this exception is that AXIOM forces usage of the STRICT 
> mode of MIME4J for decoding found in org.apache.axiom.attachments.MIMEMessage 
> class
>     MimeConfig config = new MimeConfig();
>     config.setStrictParsing(true);
> The default behavior MIME4J is SILENT(relaxed)  mode, if the strict parsing 
> is not enforced that the test will pass successfully.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@ws.apache.org
For additional commands, e-mail: dev-h...@ws.apache.org

Reply via email to