From 9dbf979e77faab3ea65b6833377949140be34299 Mon Sep 17 00:00:00 2001 From: james-prysm <90280386+james-prysm@users.noreply.github.com> Date: Fri, 15 Nov 2024 12:28:35 -0600 Subject: [PATCH] move get data after nil check for attestations (#14642) * move getData to after validations * changelog --- CHANGELOG.md | 1 + beacon-chain/sync/validate_aggregate_proof.go | 3 +-- beacon-chain/sync/validate_beacon_attestation.go | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c08dbcf548..25e3912110 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -80,6 +80,7 @@ The format is based on Keep a Changelog, and this project adheres to Semantic Ve - EIP7521 - Fixes withdrawal bug by accounting for pending partial withdrawals and deducting already withdrawn amounts from the sweep balance. [PR](https://github.com/prysmaticlabs/prysm/pull/14578) - unskip electra merkle spec test - Fix panic in validator REST mode when checking status after removing all keys +- Fix panic on attestation interface since we call data before validation ### Security diff --git a/beacon-chain/sync/validate_aggregate_proof.go b/beacon-chain/sync/validate_aggregate_proof.go index 7bb8cb592c..75dd56095e 100644 --- a/beacon-chain/sync/validate_aggregate_proof.go +++ b/beacon-chain/sync/validate_aggregate_proof.go @@ -57,11 +57,10 @@ func (s *Service) validateAggregateAndProof(ctx context.Context, pid peer.ID, ms } aggregate := m.AggregateAttestationAndProof().AggregateVal() - data := aggregate.GetData() - if err := helpers.ValidateNilAttestation(aggregate); err != nil { return pubsub.ValidationReject, err } + data := aggregate.GetData() // Do not process slot 0 aggregates. if data.Slot == 0 { return pubsub.ValidationIgnore, nil diff --git a/beacon-chain/sync/validate_beacon_attestation.go b/beacon-chain/sync/validate_beacon_attestation.go index 135812bb84..11c842e484 100644 --- a/beacon-chain/sync/validate_beacon_attestation.go +++ b/beacon-chain/sync/validate_beacon_attestation.go @@ -62,12 +62,11 @@ func (s *Service) validateCommitteeIndexBeaconAttestation(ctx context.Context, p if !ok { return pubsub.ValidationReject, errWrongMessage } - - data := att.GetData() - if err := helpers.ValidateNilAttestation(att); err != nil { return pubsub.ValidationReject, err } + data := att.GetData() + // Do not process slot 0 attestations. if data.Slot == 0 { return pubsub.ValidationIgnore, nil