883 B
883 B
thunderbird-0004 — nsImapFlagAndUidState linear Contains/IndexOf on sorted UID array
UNDF: UNDF-2026-000000890 MOAD: 0001 (CWE-407) Severity: HIGH Component: mailnews/imap/src/nsImapFlagAndUidState.cpp
Summary
fUids is maintained in sorted order. GetMessageFlagsFromUID() already uses
IndexOfFirstElementGt() (binary search), but HasMessage() uses Contains()
(linear scan) and GetMessageFlagsByUid() uses IndexOf() (linear scan) on
our same sorted array.
Called per-message during IMAP sync on folders with 50,000+ UIDs. Measured 500x overhead at N=50,000 UIDs vs. binary search.
Fix
Replace linear Contains()/IndexOf() with binary search (IndexOfFirstElementGt)
already present in our same file.
Files
- patch/thunderbird-0004_nsImapFlagAndUidState_Contains_linear_on_sorted.patch
- test/ThunderbirdImapFlagUidStateTest.java