diff --git a/beacon-chain/rpc/eth/beacon/handlers_pool.go b/beacon-chain/rpc/eth/beacon/handlers_pool.go index 09d7eeaa23..b26b298976 100644 --- a/beacon-chain/rpc/eth/beacon/handlers_pool.go +++ b/beacon-chain/rpc/eth/beacon/handlers_pool.go @@ -711,6 +711,7 @@ func (s *Server) SubmitAttesterSlashingsV2(w http.ResponseWriter, r *http.Reques versionHeader := r.Header.Get(api.VersionHeader) if versionHeader == "" { httputil.HandleError(w, api.VersionHeader+" header is required", http.StatusBadRequest) + return } v, err := version.FromString(versionHeader) if err != nil { diff --git a/beacon-chain/rpc/eth/beacon/handlers_pool_test.go b/beacon-chain/rpc/eth/beacon/handlers_pool_test.go index 8fb48692ea..f86734b1b3 100644 --- a/beacon-chain/rpc/eth/beacon/handlers_pool_test.go +++ b/beacon-chain/rpc/eth/beacon/handlers_pool_test.go @@ -2112,6 +2112,33 @@ func TestSubmitAttesterSlashingsV2(t *testing.T) { assert.Equal(t, http.StatusBadRequest, e.Code) assert.StringContains(t, "Invalid attester slashing", e.Message) }) + + t.Run("missing-version-header", func(t *testing.T) { + bs, err := util.NewBeaconStateElectra() + require.NoError(t, err) + + broadcaster := &p2pMock.MockBroadcaster{} + s := &Server{ + ChainInfoFetcher: &blockchainmock.ChainService{State: bs}, + SlashingsPool: &slashingsmock.PoolMock{}, + Broadcaster: broadcaster, + } + + var body bytes.Buffer + _, err = body.WriteString(invalidAttesterSlashing) + require.NoError(t, err) + request := httptest.NewRequest(http.MethodPost, "http://example.com/beacon/pool/attester_slashings", &body) + // Intentionally do not set api.VersionHeader to verify missing header handling. + writer := httptest.NewRecorder() + writer.Body = &bytes.Buffer{} + + s.SubmitAttesterSlashingsV2(writer, request) + require.Equal(t, http.StatusBadRequest, writer.Code) + e := &httputil.DefaultJsonError{} + require.NoError(t, json.Unmarshal(writer.Body.Bytes(), e)) + assert.Equal(t, http.StatusBadRequest, e.Code) + assert.StringContains(t, api.VersionHeader+" header is required", e.Message) + }) } func TestSubmitProposerSlashing_InvalidSlashing(t *testing.T) { diff --git a/changelog/SashaMalysehko_fix-return-after-check.md b/changelog/SashaMalysehko_fix-return-after-check.md new file mode 100644 index 0000000000..65b5a14f66 --- /dev/null +++ b/changelog/SashaMalysehko_fix-return-after-check.md @@ -0,0 +1,3 @@ +## Fixed + +- Fix missing return after version header check in SubmitAttesterSlashingsV2.