Skip to content

Commit 8a65e48

Browse files
Bashmuntagligneul
andauthored
fix: guard zero batch count in inbox search and avoid validator underflow (#4028)
Co-authored-by: Gabriel de Quadros Ligneul <[email protected]>
1 parent 9dd4435 commit 8a65e48

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

arbnode/inbox_tracker.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,9 @@ func (t *InboxTracker) FindInboxBatchContainingMessage(pos arbutil.MessageIndex)
233233
if err != nil {
234234
return 0, false, err
235235
}
236+
if batchCount == 0 {
237+
return 0, false, nil
238+
}
236239
low := uint64(0)
237240
high := batchCount - 1
238241
lastBatchMessageCount, err := t.GetBatchMessageCount(high)

staker/block_validator.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1418,10 +1418,15 @@ func (v *BlockValidator) checkValidatedGSCaughtUp() (bool, error) {
14181418
log.Error("failed reading batch count", "err", err)
14191419
batchCount = 0
14201420
}
1421-
batchMsgCount, err := v.inboxTracker.GetBatchMessageCount(batchCount - 1)
1422-
if err != nil {
1423-
log.Error("failed reading batchMsgCount", "err", err)
1421+
var batchMsgCount arbutil.MessageIndex
1422+
if batchCount == 0 {
14241423
batchMsgCount = 0
1424+
} else {
1425+
batchMsgCount, err = v.inboxTracker.GetBatchMessageCount(batchCount - 1)
1426+
if err != nil {
1427+
log.Error("failed reading batchMsgCount", "err", err)
1428+
batchMsgCount = 0
1429+
}
14251430
}
14261431
processedMsgCount, err := v.streamer.GetProcessedMessageCount()
14271432
if err != nil {

0 commit comments

Comments
 (0)