Skip to content

Commit a3baf98

Browse files
authored
VerifyDataColumnsSidecarKZGProofs: Check if sizes match. (#15892)
1 parent 5a897df commit a3baf98

File tree

3 files changed

+33
-3
lines changed

3 files changed

+33
-3
lines changed

beacon-chain/core/peerdas/p2p_interface.go

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,30 @@ func VerifyDataColumnsSidecarKZGProofs(sidecars []blocks.RODataColumn) error {
7979

8080
for _, sidecar := range sidecars {
8181
for i := range sidecar.Column {
82-
commitments = append(commitments, kzg.Bytes48(sidecar.KzgCommitments[i]))
82+
var (
83+
commitment kzg.Bytes48
84+
cell kzg.Cell
85+
proof kzg.Bytes48
86+
)
87+
88+
commitmentBytes := sidecar.KzgCommitments[i]
89+
cellBytes := sidecar.Column[i]
90+
proofBytes := sidecar.KzgProofs[i]
91+
92+
if len(commitmentBytes) != len(commitment) ||
93+
len(cellBytes) != len(cell) ||
94+
len(proofBytes) != len(proof) {
95+
return ErrMismatchLength
96+
}
97+
98+
copy(commitment[:], commitmentBytes)
99+
copy(cell[:], cellBytes)
100+
copy(proof[:], proofBytes)
101+
102+
commitments = append(commitments, commitment)
83103
indices = append(indices, sidecar.Index)
84-
cells = append(cells, kzg.Cell(sidecar.Column[i]))
85-
proofs = append(proofs, kzg.Bytes48(sidecar.KzgProofs[i]))
104+
cells = append(cells, cell)
105+
proofs = append(proofs, proof)
86106
}
87107
}
88108

beacon-chain/core/peerdas/p2p_interface_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,14 @@ func TestVerifyDataColumnSidecarKZGProofs(t *testing.T) {
6868
err := kzg.Start()
6969
require.NoError(t, err)
7070

71+
t.Run("size mismatch", func(t *testing.T) {
72+
sidecars := generateRandomSidecars(t, seed, blobCount)
73+
sidecars[0].Column[0] = sidecars[0].Column[0][:len(sidecars[0].Column[0])-1] // Remove one byte to create size mismatch
74+
75+
err := peerdas.VerifyDataColumnsSidecarKZGProofs(sidecars)
76+
require.ErrorIs(t, err, peerdas.ErrMismatchLength)
77+
})
78+
7179
t.Run("invalid proof", func(t *testing.T) {
7280
sidecars := generateRandomSidecars(t, seed, blobCount)
7381
sidecars[0].Column[0][0]++ // It is OK to overflow
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
### Fixed
2+
- `VerifyDataColumnsSidecarKZGProofs`: Check if sizes match.

0 commit comments

Comments
 (0)