From e9cb2074d3eba83c1b22cbddd0639239081b7101 Mon Sep 17 00:00:00 2001 From: lightclient Date: Thu, 8 Jun 2023 10:11:21 +0200 Subject: [PATCH] internal/era: fix rlp decode of header and correctly read total difficulty --- internal/era/era.go | 5 +++-- internal/era/iterator.go | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/internal/era/era.go b/internal/era/era.go index bb9b202464..38bebfced0 100644 --- a/internal/era/era.go +++ b/internal/era/era.go @@ -181,7 +181,7 @@ func (e *Era) InitialTD() (*big.Int, error) { if r, n, err = newSnappyReader(e.s, TypeCompressedHeader, off); err != nil { return nil, err } - if err := rlp.Decode(r, header); err != nil { + if err := rlp.Decode(r, &header); err != nil { return nil, err } off += n @@ -199,7 +199,8 @@ func (e *Era) InitialTD() (*big.Int, error) { if r, _, err = e.s.ReaderAt(TypeTotalDifficulty, off); err != nil { return nil, err } - if err := rlp.Decode(r, rawTd); err != nil { + rawTd, err = io.ReadAll(r) + if err != nil { return nil, err } td := new(big.Int).SetBytes(reverseOrder(rawTd)) diff --git a/internal/era/iterator.go b/internal/era/iterator.go index 291d55a27d..e74a8154b1 100644 --- a/internal/era/iterator.go +++ b/internal/era/iterator.go @@ -103,8 +103,8 @@ func (it *Iterator) BlockAndReceipts() (*types.Block, types.Receipts, error) { // TotalDifficulty returns the total difficulty for the iterator's current // position. func (it *Iterator) TotalDifficulty() (*big.Int, error) { - var td []byte - if err := rlp.Decode(it.inner.TotalDifficulty, td); err != nil { + td, err := io.ReadAll(it.inner.TotalDifficulty) + if err != nil { return nil, err } return new(big.Int).SetBytes(reverseOrder(td)), nil