@@ -203,6 +203,8 @@ contract L1ScrollMessenger is ScrollMessengerBase, IL1ScrollMessenger {
203203 require (_from != xDomainMessageSender, "Invalid message sender " );
204204
205205 xDomainMessageSender = _from;
206+ // xDomainMessageSender serves as reentrancy guard (notInExecution modifier).
207+ // slither-disable-next-line reentrancy-eth
206208 (bool success , ) = _to.call {value: _value}(_message);
207209 // reset value to refund gas.
208210 xDomainMessageSender = ScrollConstants.DEFAULT_XDOMAIN_MESSAGE_SENDER;
@@ -316,6 +318,8 @@ contract L1ScrollMessenger is ScrollMessengerBase, IL1ScrollMessenger {
316318 // @note If the list is very long, the message may never be dropped.
317319 while (true ) {
318320 // If the `_lastIndex` is from `messageQueueV2`, it will revert in `messageQueueV1.dropCrossDomainMessage`.
321+ // call to messageQueueV1 is safe.
322+ // slither-disable-next-line reentrancy-no-eth
319323 IL1MessageQueueV1 (messageQueueV1).dropCrossDomainMessage (_lastIndex);
320324 _lastIndex = prevReplayIndex[_lastIndex];
321325 if (_lastIndex == 0 ) break ;
@@ -328,6 +332,8 @@ contract L1ScrollMessenger is ScrollMessengerBase, IL1ScrollMessenger {
328332
329333 // set execution context
330334 xDomainMessageSender = ScrollConstants.DROP_XDOMAIN_MESSAGE_SENDER;
335+ // xDomainMessageSender serves as reentrancy guard (notInExecution modifier).
336+ // slither-disable-next-line reentrancy-eth
331337 IMessageDropCallback (_from).onDropMessage {value: _value}(_message);
332338 // clear execution context
333339 xDomainMessageSender = ScrollConstants.DEFAULT_XDOMAIN_MESSAGE_SENDER;
0 commit comments