# HG changeset patch # User Timo Sirainen # Date 1241198130 14400 # Node ID d2d93c02dc7bf59c2ac297b20c3e0a4ee6846062 # Parent 2f895db2af46d72fd27da5480bcbd3be9bc8e722 mbox: Fix to handling CRs before From_ lines. diff -r 2f895db2af46 -r d2d93c02dc7b src/lib-storage/index/mbox/istream-raw-mbox.c --- a/src/lib-storage/index/mbox/istream-raw-mbox.c Fri May 01 13:05:45 2009 -0400 +++ b/src/lib-storage/index/mbox/istream-raw-mbox.c Fri May 01 13:15:30 2009 -0400 @@ -295,19 +295,19 @@ /* potential From-line, see if we have the rest of the line buffered. */ i++; + if (i >= 7 && buf[i-7] == '\r') { + /* CR also belongs to it. */ + crlf_ending = TRUE; + from_start_pos = i - 7; + } else { + crlf_ending = FALSE; + from_start_pos = i - 6; + } + if (rstream->hdr_offset + rstream->mail_size == - stream->istream.v_offset + i - 6 || + stream->istream.v_offset + from_start_pos || rstream->mail_size == (uoff_t)-1) { from_after_pos = i; - from_start_pos = i - 6; - if (from_start_pos > 0 && - buf[from_start_pos-1] == '\r') { - /* CR also belongs to it. */ - crlf_ending = TRUE; - from_start_pos--; - } else { - crlf_ending = FALSE; - } if (ret == -2) { /* even if we don't have the whole line, we need to @@ -316,7 +316,7 @@ } } fromp = mbox_from; - } else if (from_start_pos != (size_t)-1) { + } else if (from_after_pos != (size_t)-1) { /* we have the whole From-line here now. See if it's a valid one. */ mbox_verify: