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

Tellier Benoit commented on MIME4J-265:
---------------------------------------

Hi,

Looking at your question : 

> Looking at the code of DefaultFieldBuilder, it seems that the check over line 
> length is not done on the single line but on the overall header, I'm refering 
> to this line:

The answer is simple: a header might be on multiple lines, eg

{code}
Received: from X (X [X.X.X.X])
         by X with LMTPA;
         Thu, 09 Nov 2017 11:14:13 +0100
{code}

And DefaultFieldBuilder aggregates several byte buffers into a single raw 
field, concatenating them.

Hence, the line you are pointing is valid.

What is misleading is that maxHeaderLength is the total length of a header (and 
not of a line).

Note that you can play with *MimeConfig* in order to change the defaults limits.

Cheers,

Benoit



> Possible wrong calculation of header length
> -------------------------------------------
>
>                 Key: MIME4J-265
>                 URL: https://issues.apache.org/jira/browse/MIME4J-265
>             Project: James Mime4j
>          Issue Type: Bug
>    Affects Versions: 0.7.2
>            Reporter: Raffaele Gambelli
>              Labels: headers
>
> I've implemented a sort of mail server and I have many threads listening for 
> incoming emails.
> I'm using mime4j to parse javamail Message.
> I had only one case of:
> Caused by: org.apache.james.mime4j.io.MaxHeaderLengthLimitException: Maximum 
> header length limit exceeded
>  at 
> org.apache.james.mime4j.stream.DefaultFieldBuilder.append(DefaultFieldBuilder.java:63)
>         at 
> org.apache.james.mime4j.stream.MimeEntity.readRawField(MimeEntity.java:212)
>         at 
> org.apache.james.mime4j.stream.MimeEntity.nextField(MimeEntity.java:258)
> Looking at the code of DefaultFieldBuilder, it seems that the check over line 
> length is not done on the single line but on the overall header, I'm refering 
> to this line:
> {code:java}
> if (this.maxlen > 0 && this.buf.length() + len >= this.maxlen) {
> {code}
> Why should you add "this.buf.length" ?
> I know that there is no limit on header length, but only in its lines.
> I can't attach my eml for privacy reasons but I can confirm that I have no 
> too much long line
> Thanks



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to