@@ -203,6 +203,8 @@ contract L1ScrollMessenger is ScrollMessengerBase, IL1ScrollMessenger {
203
203
require (_from != xDomainMessageSender, "Invalid message sender " );
204
204
205
205
xDomainMessageSender = _from;
206
+ // xDomainMessageSender serves as reentrancy guard (notInExecution modifier).
207
+ // slither-disable-next-line reentrancy-eth
206
208
(bool success , ) = _to.call {value: _value}(_message);
207
209
// reset value to refund gas.
208
210
xDomainMessageSender = ScrollConstants.DEFAULT_XDOMAIN_MESSAGE_SENDER;
@@ -316,6 +318,8 @@ contract L1ScrollMessenger is ScrollMessengerBase, IL1ScrollMessenger {
316
318
// @note If the list is very long, the message may never be dropped.
317
319
while (true ) {
318
320
// 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
319
323
IL1MessageQueueV1 (messageQueueV1).dropCrossDomainMessage (_lastIndex);
320
324
_lastIndex = prevReplayIndex[_lastIndex];
321
325
if (_lastIndex == 0 ) break ;
@@ -328,6 +332,8 @@ contract L1ScrollMessenger is ScrollMessengerBase, IL1ScrollMessenger {
328
332
329
333
// set execution context
330
334
xDomainMessageSender = ScrollConstants.DROP_XDOMAIN_MESSAGE_SENDER;
335
+ // xDomainMessageSender serves as reentrancy guard (notInExecution modifier).
336
+ // slither-disable-next-line reentrancy-eth
331
337
IMessageDropCallback (_from).onDropMessage {value: _value}(_message);
332
338
// clear execution context
333
339
xDomainMessageSender = ScrollConstants.DEFAULT_XDOMAIN_MESSAGE_SENDER;
0 commit comments