From 0cace2c5931b7dcaab76b0ac4ff818fe59aaec0f Mon Sep 17 00:00:00 2001 From: LarryArnault45 Date: Thu, 2 Apr 2026 15:11:40 +0800 Subject: [PATCH] consensus/bor: guard nil sprint header in CommitStates --- consensus/bor/bor.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/consensus/bor/bor.go b/consensus/bor/bor.go index 2b0ca4fcb7..e4128162ba 100644 --- a/consensus/bor/bor.go +++ b/consensus/bor/bor.go @@ -1744,7 +1744,18 @@ func (c *Bor) CommitStates( return nil, err } - to = time.Unix(int64(chain.Chain.GetHeaderByNumber(number-c.config.CalculateSprint(number)).Time), 0) + sprintLength := c.config.CalculateSprint(number) + if number < sprintLength { + return nil, fmt.Errorf("invalid sprint start block for block %d with sprint length %d", number, sprintLength) + } + + sprintStartNumber := number - sprintLength + sprintStartHeader := chain.Chain.GetHeaderByNumber(sprintStartNumber) + if sprintStartHeader == nil { + return nil, fmt.Errorf("failed to fetch sprint start header %d for block %d", sprintStartNumber, number) + } + + to = time.Unix(int64(sprintStartHeader.Time), 0) } lastStateID := lastStateIDBig.Uint64()