• Andrew M. Kuchling's avatar
    [Apply length-checking.diff from bug #1599254] · eca4c312
    Andrew M. Kuchling yazdı
    Add length checking to single-file mailbox formats: before doing a
    flush() on a mailbox, seek to the end and verify its length is
    unchanged, raising ExternalClashError if the file's length has
    changed.
    
    This fix avoids potential data loss if some other process appends to
    the mailbox file after the table of contents has been generated;
    instead of overwriting the modified file, you'll get the exception.
    
    I also noticed that the self._lookup() call in self.flush() wasn't
    necessary (everything that sets self._pending to True also calls
    self.lookup()), and replaced it by an assertion.
    
    2.5 backport candidate.
    eca4c312
mailbox.py 73.6 KB