Summary
complete_polled_requests resets the preload timer before confirming that the provided sequence
number exists in the preload map.
Vulnerability details
pub fn complete_polled_requests( &mut self, predicted_proposal_seqnum: SeqNum, requests: impl Iterator<Item = Address>,) { self.timer.set(tokio::time::sleep(Duration::from_millis( PRELOAD_INTERVAL_MS, )));
let Entry::Occupied(mut entry) = self.map.entry(predicted_proposal_seqnum) else { warn!(?predicted_proposal_seqnum, "unknown seqnum"); return; };Impact
An attacker who can repeatedly trigger completions for unknown sequence numbers can keep pacing the timer and delay future preload batches.
Recommendation
Only reset the timer after the sequence number is validated and the map entry is known to exist.