java-topology/defects/thunderbird-0004/TICKET.md

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