[EMAIL PROTECTED] wrote:
----------------------------------------------------------------------
sr - 07-Dec-04 18:39 CET ----------------------------------------------------------------------
Hi Paul and everybody, is the out of range error triggered by the "Mark all
as read" menu item in Outlook express the same problem as in the original
bugnote of this thread? Should I create a new thread?

Please do. I've confirmed the bug. OE is threading the edges of imap compliance here.

The dbmail response 'BAD invalid message range' is actually quite valid. OE specifies a range of 1:someverybigvalue in the STORE command, a value which is totally out of range and, according to the RFC *should* therefor trigger a BAD response.

It says *should*, not *must*, so we can probably accomodate OE on this one.

However, looking into this I see that OE is doing some weird shit.

It does a:

tag UID FETCH <uidnext>:* (BODY.PEEK[....] ENVELOPE ...)

So it knows the max uid value, but still tries to fetch beyond.

To me the RFC is less than clear on this issue:

quoting from rfc3501:

"""
seq-number      = nz-number / "*"
                    ; message sequence number (COPY, FETCH, STORE
                    ; commands) or unique identifier (UID COPY,
                    ; UID FETCH, UID STORE commands).
                    ; * represents the largest number in use.  In
                    ; the case of message sequence numbers, it is
                    ; the number of messages in a non-empty mailbox.
                    ; In the case of unique identifiers, it is the
                    ; unique identifier of the last message in the
                    ; mailbox or, if the mailbox is empty, the
                    ; mailbox's current UIDNEXT value.
                    ; The server should respond with a tagged BAD
                    ; response to a command that uses a message
                    ; sequence number greater than the number of
                    ; messages in the selected mailbox.  This
                    ; includes "*" if the selected mailbox is empty.

seq-range       = seq-number ":" seq-number
                    ; two seq-number values and all values between
                    ; these two regardless of order.
                    ; Example: 2:4 and 4:2 are equivalent and indicate
                    ; values 2, 3, and 4.
                    ; Example: a unique identifier sequence range of
                    ; 3291:* includes the UID of the last message in
                    ; the mailbox, even if that value is less than 3291.

sequence-set    = (seq-number / seq-range) *("," sequence-set)
                    ; set of seq-number values, regardless of order.
                    ; Servers MAY coalesce overlaps and/or execute the
                    ; sequence in any order.
                    ; Example: a message sequence number set of
                    ; 2,4:7,9,12:* for a mailbox with 15 messages is
                    ; equivalent to 2,4,5,6,7,9,12,13,14,15
                    ; Example: a message sequence number set of *:4,5:7
                    ; for a mailbox with 10 messages is equivalent to
                    ; 10,9,8,7,6,5,4,5,6,7 and MAY be reordered and
                    ; overlap coalesced to be 4,5,6,7,8,9,10.

"""


So given a seq-range of N:* where N > largest number in use, this range does include the largest number in use. Since N is too big however, a BAD response should be issued. But perhaps OE is expecting a fetch response for the largest number in use, here, and is suffering from a stack corruption when issuing the subsequent store command with a really big long long value.


--
  ________________________________________________________________
  Paul Stevens                                         [EMAIL PROTECTED]
  NET FACILITIES GROUP                     GPG/PGP: 1024D/11F8CD31
  The Netherlands_______________________________________www.nfg.nl

Reply via email to