Skip to content

Commit 8768ca2

Browse files
fix(execution): clear omitted payload envelope optionals (#3439)
Signed-off-by: elonfliter <elonfliter@outlook.com> Co-authored-by: Marko <marko@baricevic.me>
1 parent 1fe1aa3 commit 8768ca2

2 files changed

Lines changed: 25 additions & 3 deletions

File tree

execution/evm/engine_payload.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,14 @@ func (e *EnginePayloadEnvelope) UnmarshalJSON(input []byte) error {
8585
e.BlockValue = (*big.Int)(dec.BlockValue)
8686
e.BlobsBundle = dec.BlobsBundle
8787

88+
e.Requests = nil
8889
if dec.Requests != nil {
8990
e.Requests = make([][]byte, len(dec.Requests))
9091
for i, request := range dec.Requests {
9192
e.Requests[i] = request
9293
}
9394
}
94-
if dec.Override != nil {
95-
e.Override = *dec.Override
96-
}
95+
e.Override = dec.Override != nil && *dec.Override
9796
e.Witness = dec.Witness
9897
return nil
9998
}

execution/evm/engine_rpc_client_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,29 @@ func TestEnginePayloadEnvelope_MarshalJSON_UsesWireFieldNames(t *testing.T) {
573573
require.JSONEq(t, string(envelope.RawExecutionPayload), string(decoded.RawExecutionPayload))
574574
}
575575

576+
func TestEnginePayloadEnvelope_UnmarshalClearsOmittedFields(t *testing.T) {
577+
withOptionals := strings.ReplaceAll(minimalPayloadEnvelopeJSON,
578+
`"executionRequests": []`, `"executionRequests": ["0x01"]`)
579+
withOptionals = strings.ReplaceAll(withOptionals,
580+
`"shouldOverrideBuilder": false`, `"shouldOverrideBuilder": true`)
581+
582+
var envelope EnginePayloadEnvelope
583+
require.NoError(t, json.Unmarshal([]byte(withOptionals), &envelope))
584+
require.NotEmpty(t, envelope.Requests)
585+
require.True(t, envelope.Override)
586+
587+
var withoutOptionals map[string]json.RawMessage
588+
require.NoError(t, json.Unmarshal([]byte(minimalPayloadEnvelopeJSON), &withoutOptionals))
589+
delete(withoutOptionals, "executionRequests")
590+
delete(withoutOptionals, "shouldOverrideBuilder")
591+
encoded, err := json.Marshal(withoutOptionals)
592+
require.NoError(t, err)
593+
594+
require.NoError(t, json.Unmarshal(encoded, &envelope))
595+
require.Nil(t, envelope.Requests)
596+
require.False(t, envelope.Override)
597+
}
598+
576599
func TestIsUnsupportedForkErr(t *testing.T) {
577600
tests := []struct {
578601
name string

0 commit comments

Comments
 (0)