From 222d301f5873d4e0f263da68be423ff1d2a28a35 Mon Sep 17 00:00:00 2001 From: BeniaminDrasovean Date: Mon, 13 Jul 2026 12:09:29 +0300 Subject: [PATCH] fix a possible underflow on getPruningHandler --- process/block/baseProcess.go | 2 +- process/block/baseProcess_test.go | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/process/block/baseProcess.go b/process/block/baseProcess.go index 993c6bde9f..5b3dc64455 100644 --- a/process/block/baseProcess.go +++ b/process/block/baseProcess.go @@ -2449,7 +2449,7 @@ func (bp *baseProcessor) PruneStateOnRollback(currHeader data.HeaderHandler, cur } func (bp *baseProcessor) getPruningHandler(finalHeaderNonce uint64) state.PruningHandler { - if finalHeaderNonce-bp.lastRestartNonce <= uint64(bp.pruningDelay) { + if finalHeaderNonce < bp.lastRestartNonce || finalHeaderNonce-bp.lastRestartNonce <= uint64(bp.pruningDelay) { log.Debug("will skip pruning", "finalHeaderNonce", finalHeaderNonce, "last restart nonce", bp.lastRestartNonce, diff --git a/process/block/baseProcess_test.go b/process/block/baseProcess_test.go index 6de919c3d9..0ecd9cd0ee 100644 --- a/process/block/baseProcess_test.go +++ b/process/block/baseProcess_test.go @@ -3810,6 +3810,10 @@ func TestBaseProcessor_getPruningHandler(t *testing.T) { ph = bp.GetPruningHandler(14) assert.True(t, ph.IsPruningEnabled()) + bp.SetLastRestartNonce(15) + ph = bp.GetPruningHandler(14) + assert.False(t, ph.IsPruningEnabled()) + bp.SetClosingNodeStarted(true) ph = bp.GetPruningHandler(14) assert.False(t, ph.IsPruningEnabled())