Skip to content

Commit 2be0331

Browse files
committed
all: check error returned from rlp.Encode
1 parent 447b5f7 commit 2be0331

File tree

4 files changed

+38
-10
lines changed

4 files changed

+38
-10
lines changed

core/rawdb/accessors_chain_test.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,19 +75,24 @@ func TestBodyStorage(t *testing.T) {
7575
body := &types.Body{Uncles: []*types.Header{{Extra: []byte("test header")}}}
7676

7777
hasher := sha3.NewLegacyKeccak256()
78-
rlp.Encode(hasher, body)
78+
if err := rlp.Encode(hasher, body); err != nil {
79+
t.Fatalf("encode body err: %v", err)
80+
}
7981
hash := common.BytesToHash(hasher.Sum(nil))
8082

8183
if entry := ReadBody(db, hash, 0); entry != nil {
8284
t.Fatalf("Non existent body returned: %v", entry)
8385
}
86+
8487
// Write and verify the body in the database
8588
WriteBody(db, hash, 0, body)
8689
if entry := ReadBody(db, hash, 0); entry == nil {
8790
t.Fatalf("Stored body not found")
88-
} else if types.DeriveSha(types.Transactions(entry.Transactions), newTestHasher()) != types.DeriveSha(types.Transactions(body.Transactions), newTestHasher()) || types.CalcUncleHash(entry.Uncles) != types.CalcUncleHash(body.Uncles) {
91+
} else if types.DeriveSha(types.Transactions(entry.Transactions), newTestHasher()) != types.DeriveSha(types.Transactions(body.Transactions), newTestHasher()) ||
92+
types.CalcUncleHash(entry.Uncles) != types.CalcUncleHash(body.Uncles) {
8993
t.Fatalf("Retrieved body mismatch: have %v, want %v", entry, body)
9094
}
95+
9196
if entry := ReadBodyRLP(db, hash, 0); entry == nil {
9297
t.Fatalf("Stored body RLP not found")
9398
} else {
@@ -98,6 +103,7 @@ func TestBodyStorage(t *testing.T) {
98103
t.Fatalf("Retrieved RLP body mismatch: have %v, want %v", entry, body)
99104
}
100105
}
106+
101107
// Delete the body and verify the execution
102108
DeleteBody(db, hash, 0)
103109
if entry := ReadBody(db, hash, 0); entry != nil {

core/types/types_test.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ func benchRLP(b *testing.B, encode bool) {
4444
key, _ := crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
4545
to := common.HexToAddress("0x00000000000000000000000000000000deadbeef")
4646
signer := NewLondonSigner(big.NewInt(1337))
47+
4748
for _, tc := range []struct {
4849
name string
4950
obj interface{}
@@ -127,13 +128,18 @@ func benchRLP(b *testing.B, encode bool) {
127128
b.ReportAllocs()
128129
var null = &devnull{}
129130
for b.Loop() {
130-
rlp.Encode(null, tc.obj)
131+
if err := rlp.Encode(null, tc.obj); err != nil {
132+
b.Fatal(err)
133+
}
131134
}
132135
b.SetBytes(int64(null.len / b.N))
133136
})
134137
} else {
135-
data, _ := rlp.EncodeToBytes(tc.obj)
136138
// Test decoding
139+
data, err := rlp.EncodeToBytes(tc.obj)
140+
if err != nil {
141+
b.Fatal(err)
142+
}
137143
b.Run(tc.name, func(b *testing.B) {
138144
b.ReportAllocs()
139145
for b.Loop() {

p2p/enode/idscheme.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,16 @@ func SignV4(r *enr.Record, privkey *ecdsa.PrivateKey) error {
5050
cpy.Set(Secp256k1(privkey.PublicKey))
5151

5252
h := sha3.NewLegacyKeccak256()
53-
rlp.Encode(h, cpy.AppendElements(nil))
53+
if err := rlp.Encode(h, cpy.AppendElements(nil)); err != nil {
54+
panic("can't encode: " + err.Error())
55+
}
56+
5457
sig, err := crypto.Sign(h.Sum(nil), privkey)
5558
if err != nil {
5659
return err
5760
}
5861
sig = sig[:len(sig)-1] // remove v
62+
5963
if err = cpy.SetSig(V4ID{}, sig); err == nil {
6064
*r = cpy
6165
}
@@ -71,7 +75,10 @@ func (V4ID) Verify(r *enr.Record, sig []byte) error {
7175
}
7276

7377
h := sha3.NewLegacyKeccak256()
74-
rlp.Encode(h, r.AppendElements(nil))
78+
if err := rlp.Encode(h, r.AppendElements(nil)); err != nil {
79+
panic("can't encode: " + err.Error())
80+
}
81+
7582
if !crypto.VerifySignature(entry, h.Sum(nil), sig) {
7683
return enr.ErrInvalidSig
7784
}

trie/node_test.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ func TestDecodeNestedNode(t *testing.T) {
4545
fullNodeData[15] = data
4646

4747
buf := bytes.NewBuffer([]byte{})
48-
rlp.Encode(buf, fullNodeData)
48+
if err := rlp.Encode(buf, fullNodeData); err != nil {
49+
t.Fatalf("encode full node err: %v", err)
50+
}
4951

5052
if _, err := decodeNode([]byte("testdecode"), buf.Bytes()); err != nil {
5153
t.Fatalf("decode nested full node err: %v", err)
@@ -55,8 +57,11 @@ func TestDecodeNestedNode(t *testing.T) {
5557
func TestDecodeFullNodeWrongSizeChild(t *testing.T) {
5658
fullNodeData := newTestFullNode([]byte("wrongsizechild"))
5759
fullNodeData[0] = []byte("00")
60+
5861
buf := bytes.NewBuffer([]byte{})
59-
rlp.Encode(buf, fullNodeData)
62+
if err := rlp.Encode(buf, fullNodeData); err != nil {
63+
t.Fatalf("encode full node err: %v", err)
64+
}
6065

6166
_, err := decodeNode([]byte("testdecode"), buf.Bytes())
6267
if _, ok := err.(*decodeError); !ok {
@@ -75,7 +80,9 @@ func TestDecodeFullNodeWrongNestedFullNode(t *testing.T) {
7580
fullNodeData[15] = data
7681

7782
buf := bytes.NewBuffer([]byte{})
78-
rlp.Encode(buf, fullNodeData)
83+
if err := rlp.Encode(buf, fullNodeData); err != nil {
84+
t.Fatalf("encode full node err: %v", err)
85+
}
7986

8087
_, err := decodeNode([]byte("testdecode"), buf.Bytes())
8188
if _, ok := err.(*decodeError); !ok {
@@ -86,7 +93,9 @@ func TestDecodeFullNodeWrongNestedFullNode(t *testing.T) {
8693
func TestDecodeFullNode(t *testing.T) {
8794
fullNodeData := newTestFullNode([]byte("decodefullnode"))
8895
buf := bytes.NewBuffer([]byte{})
89-
rlp.Encode(buf, fullNodeData)
96+
if err := rlp.Encode(buf, fullNodeData); err != nil {
97+
t.Fatalf("encode full node err: %v", err)
98+
}
9099

91100
_, err := decodeNode([]byte("testdecode"), buf.Bytes())
92101
if err != nil {

0 commit comments

Comments
 (0)