From 67e689e161357458696648c7d7eea1bb0111c206 Mon Sep 17 00:00:00 2001 From: Forostovec Date: Wed, 5 Nov 2025 10:33:34 +0200 Subject: [PATCH] triedb/pathdb: fix off-by-one for last state history ID and handle empty ranges --- triedb/pathdb/history_inspect.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/triedb/pathdb/history_inspect.go b/triedb/pathdb/history_inspect.go index 9b4eea27b4..e630d0467e 100644 --- a/triedb/pathdb/history_inspect.go +++ b/triedb/pathdb/history_inspect.go @@ -50,12 +50,12 @@ func sanitizeRange(start, end uint64, freezer ethdb.AncientReader) (uint64, uint if err != nil { return 0, 0, err } - last := head - 1 + last := head if end != 0 && end < last { last = end } // Make sure the range is valid - if first >= last { + if first > last { return 0, 0, fmt.Errorf("range is invalid, first: %d, last: %d", first, last) } return first, last, nil @@ -143,7 +143,11 @@ func historyRange(freezer ethdb.AncientReader) (uint64, uint64, error) { if err != nil { return 0, 0, err } - last := head - 1 + // If there is no history available, return an explicit error. + if head == tail { + return 0, 0, fmt.Errorf("no history available") + } + last := head fh, err := readStateHistory(freezer, first) if err != nil {