all: handle err from func rlp.Encode, close XFN-127 (#1692)

This commit is contained in:
Daniel Liu 2025-11-03 15:15:19 +08:00 committed by GitHub
parent 426d4a7a9f
commit 58c066f053
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 39 additions and 17 deletions

View file

@ -83,7 +83,9 @@ func sigHash(header *types.Header) (hash common.Hash) {
if header.BaseFee != nil {
enc = append(enc, header.BaseFee)
}
rlp.Encode(hasher, enc)
if err := rlp.Encode(hasher, enc); err != nil {
panic("rlp.Encode fail: " + err.Error())
}
hasher.Sum(hash[:0])
return hash
}

View file

@ -41,7 +41,9 @@ func sigHash(header *types.Header) (hash common.Hash) {
if header.BaseFee != nil {
enc = append(enc, header.BaseFee)
}
rlp.Encode(hasher, enc)
if err := rlp.Encode(hasher, enc); err != nil {
panic("rlp.Encode fail: " + err.Error())
}
hasher.Sum(hash[:0])
return hash
}

View file

@ -168,7 +168,9 @@ func sigHash(header *types.Header) (hash common.Hash) {
if header.BaseFee != nil {
enc = append(enc, header.BaseFee)
}
rlp.Encode(hasher, enc)
if err := rlp.Encode(hasher, enc); err != nil {
panic("rlp.Encode fail: " + err.Error())
}
hasher.Sum(hash[:0])
return hash
}

View file

@ -97,7 +97,9 @@ func TestBodyStorage(t *testing.T) {
body := &types.Body{Uncles: []*types.Header{{Extra: []byte("test header")}}}
hasher := sha3.NewLegacyKeccak256()
rlp.Encode(hasher, body)
if err := rlp.Encode(hasher, body); err != nil {
t.Fatalf("rlp.Encode fail: %v", err)
}
hash := common.BytesToHash(hasher.Sum(nil))
if entry := ReadBody(db, hash, 0); entry != nil {

View file

@ -347,7 +347,9 @@ func (api *BlockChainAPI) GetTransactionAndReceiptProof(ctx context.Context, has
tx_tr := deriveTrie(block.Transactions())
keybuf := new(bytes.Buffer)
rlp.Encode(keybuf, uint(index))
if err := rlp.Encode(keybuf, uint(index)); err != nil {
return nil, err
}
var tx_proof proofPairList
if err := tx_tr.Prove(keybuf.Bytes(), 0, &tx_proof); err != nil {
return nil, err

View file

@ -53,7 +53,9 @@ func TestTransactionProof(t *testing.T) {
for i := 0; i < transactions.Len(); i++ {
var proof proofPairList
keybuf := new(bytes.Buffer)
rlp.Encode(keybuf, uint(i))
if err := rlp.Encode(keybuf, uint(i)); err != nil {
t.Fatalf("rlp.Encode fail: %v", err)
}
if err := tr.Prove(keybuf.Bytes(), 0, &proof); err != nil {
t.Fatal("Prove err:", err)
}
@ -86,7 +88,9 @@ func TestReceiptProof(t *testing.T) {
for i := 0; i < receipts.Len(); i++ {
var proof proofPairList
keybuf := new(bytes.Buffer)
rlp.Encode(keybuf, uint(i))
if err := rlp.Encode(keybuf, uint(i)); err != nil {
t.Fatalf("rlp.Encode fail: %v", err)
}
if err := tr.Prove(keybuf.Bytes(), 0, &proof); err != nil {
t.Fatal("Prove err:", err)
}

View file

@ -244,7 +244,9 @@ func (r *Record) signAndEncode(privkey *ecdsa.PrivateKey) error {
// Sign the tail of the list.
h := sha3.NewLegacyKeccak256()
rlp.Encode(h, list[1:])
if err := rlp.Encode(h, list[1:]); err != nil {
return err
}
sig, err := crypto.Sign(h.Sum(nil), privkey)
if err != nil {
return err

View file

@ -303,7 +303,9 @@ func (tx *stTransaction) toMessage(ps stPostState, number *big.Int, baseFee *big
func rlpHash(x interface{}) (h common.Hash) {
hw := sha3.NewLegacyKeccak256()
rlp.Encode(hw, x)
if err := rlp.Encode(hw, x); err != nil {
panic("can't encode: " + err.Error())
}
hw.Sum(h[:0])
return h
}

View file

@ -45,8 +45,9 @@ func TestDecodeNestedNode(t *testing.T) {
fullNodeData[15] = data
buf := bytes.NewBuffer([]byte{})
rlp.Encode(buf, fullNodeData)
if err := rlp.Encode(buf, fullNodeData); err != nil {
t.Fatalf("rlp.Encode fail: %v", err)
}
if _, err := decodeNode([]byte("testdecode"), buf.Bytes()); err != nil {
t.Fatalf("decode nested full Node err: %v", err)
}
@ -56,8 +57,9 @@ func TestDecodeFullNodeWrongSizeChild(t *testing.T) {
fullNodeData := newTestFullNode([]byte("wrongsizechild"))
fullNodeData[0] = []byte("00")
buf := bytes.NewBuffer([]byte{})
rlp.Encode(buf, fullNodeData)
if err := rlp.Encode(buf, fullNodeData); err != nil {
t.Fatalf("rlp.Encode fail: %v", err)
}
_, err := decodeNode([]byte("testdecode"), buf.Bytes())
if _, ok := err.(*decodeError); !ok {
t.Fatalf("decodeNode returned wrong err: %v", err)
@ -75,8 +77,9 @@ func TestDecodeFullNodeWrongNestedFullNode(t *testing.T) {
fullNodeData[15] = data
buf := bytes.NewBuffer([]byte{})
rlp.Encode(buf, fullNodeData)
if err := rlp.Encode(buf, fullNodeData); err != nil {
t.Fatalf("rlp.Encode fail: %v", err)
}
_, err := decodeNode([]byte("testdecode"), buf.Bytes())
if _, ok := err.(*decodeError); !ok {
t.Fatalf("decodeNode returned wrong err: %v", err)
@ -86,8 +89,9 @@ func TestDecodeFullNodeWrongNestedFullNode(t *testing.T) {
func TestDecodeFullNode(t *testing.T) {
fullNodeData := newTestFullNode([]byte("decodefullnode"))
buf := bytes.NewBuffer([]byte{})
rlp.Encode(buf, fullNodeData)
if err := rlp.Encode(buf, fullNodeData); err != nil {
t.Fatalf("rlp.Encode fail: %v", err)
}
_, err := decodeNode([]byte("testdecode"), buf.Bytes())
if err != nil {
t.Fatalf("decode full Node err: %v", err)