Skip to content

Commit f3455a7

Browse files
authored
fix: add length validation for blob sidecar deserialization (#4795)
1 parent 9501773 commit f3455a7

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

action/blob_data.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,13 +137,22 @@ func FromProtoBlobTxSideCar(pb *iotextypes.BlobTxSidecar) (*types.BlobTxSidecar,
137137
Proofs: make([]kzg4844.Proof, len(pb.Proofs)),
138138
}
139139
for i := range pb.Blobs {
140-
sidecar.Blobs[i] = *(*kzg4844.Blob)(pb.Blobs[i])
140+
if len(pb.Blobs[i]) != len(kzg4844.Blob{}) {
141+
return nil, errors.New("invalid blob length")
142+
}
143+
copy(sidecar.Blobs[i][:], pb.Blobs[i])
141144
}
142145
for i := range pb.Commitments {
143-
sidecar.Commitments[i] = *(*kzg4844.Commitment)(pb.Commitments[i])
146+
if len(pb.Commitments[i]) != len(kzg4844.Commitment{}) {
147+
return nil, errors.New("invalid commitment length")
148+
}
149+
copy(sidecar.Commitments[i][:], pb.Commitments[i])
144150
}
145151
for i := range pb.Proofs {
146-
sidecar.Proofs[i] = *(*kzg4844.Proof)(pb.Proofs[i])
152+
if len(pb.Proofs[i]) != len(kzg4844.Proof{}) {
153+
return nil, errors.New("invalid proof length")
154+
}
155+
copy(sidecar.Proofs[i][:], pb.Proofs[i])
147156
}
148157
return &sidecar, nil
149158
}

0 commit comments

Comments
 (0)