Reentrancy guard on external-calling functions
Hyperlane's assessment for RD-F-014 — scored yellow on the v1.7.0 rubric. The evidence below is the curator's reasoning for this score.
Evidence summary #
Mailbox.process() uses check-effects-interactions pattern: delivery mapping written (state changed) before recipient.handle() external call. No nonReentrant modifier, but CEI pattern provides reentrancy protection for double-delivery. Warp Route transfer functions (HypERC20Collateral, HypNative) have external calls — reentrancy coverage not verified for all paths without tool run. Score: yellow (Mailbox core pattern correct; Warp Route coverage not fully verified).
Sources #
- GitHubMailbox.sol — process() function showing CEI orderingMailbox.sol process() — deliveries mapping written before handle() call (CEI pattern)retrieved 2026-05-17
Methodology #
Determine whether all state-mutating functions that perform external calls carry `nonReentrant` or an equivalent reentrancy guard.
See the full factor methodology and distribution across all protocols →