Skip to content

test_truncated_data_portion_opcodes()

Documentation for tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py::test_truncated_data_portion_opcodes@21fb11c8.

Generate fixtures for these test cases for Osaka with:

fill -v tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py::test_truncated_data_portion_opcodes --fork Osaka

Test that an instruction with data portion and truncated immediate bytes (therefore a terminating instruction is also missing) invalidates EOF.

Source code in tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
@pytest.mark.parametrize(
    "compute_max_stack_height, truncate_all, opcode",
    valid_opcode_combinations([False, True], [False, True], sorted(data_portion_opcodes)),
)
def test_truncated_data_portion_opcodes(
    eof_test: EOFTestFiller,
    opcode: Opcode,
    truncate_all: bool,
    compute_max_stack_height: bool,
):
    """
    Test that an instruction with data portion and truncated immediate bytes
    (therefore a terminating instruction is also missing) invalidates EOF.
    """
    opcode_with_data_portion: bytes = bytes(opcode[1])

    # Compose instruction bytes with empty imm bytes (truncate_all) or 1 byte shorter imm bytes.
    opcode_bytes = opcode_with_data_portion[0:1] if truncate_all else opcode_with_data_portion[:-1]

    if opcode.min_stack_height > 0:
        opcode_bytes = bytes(Op.PUSH0 * opcode.min_stack_height) + opcode_bytes

    max_stack_height = (
        max(opcode.min_stack_height, opcode.pushed_stack_items) if compute_max_stack_height else 0
    )

    eof_code = Container(
        sections=[
            Section.Code(opcode_bytes, max_stack_height=max_stack_height),
            # Provide data section potentially confused with missing imm bytes.
            Section.Data(b"\0" * 64),
        ]
    )
    eof_test(
        container=eof_code,
        expect_exception=EOFException.TRUNCATED_INSTRUCTION,
    )

Parametrized Test Cases

The interactive table below is also available as a standalone page.

Test ID (Abbreviated) compute_max_stack_height truncate_all opcode
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH1 False False PUSH1
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH1 True False PUSH1
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH2 False False PUSH2
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH2 True False PUSH2
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH2 False True PUSH2
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH2 True True PUSH2
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH3 False False PUSH3
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH3 True False PUSH3
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH3 False True PUSH3
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH3 True True PUSH3
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH4 False False PUSH4
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH4 True False PUSH4
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH4 False True PUSH4
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH4 True True PUSH4
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH5 False False PUSH5
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH5 True False PUSH5
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH5 False True PUSH5
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH5 True True PUSH5
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH6 False False PUSH6
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH6 True False PUSH6
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH6 False True PUSH6
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH6 True True PUSH6
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH7 False False PUSH7
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH7 True False PUSH7
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH7 False True PUSH7
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH7 True True PUSH7
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH8 False False PUSH8
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH8 True False PUSH8
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH8 False True PUSH8
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH8 True True PUSH8
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH9 False False PUSH9
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH9 True False PUSH9
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH9 False True PUSH9
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH9 True True PUSH9
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH10 False False PUSH10
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH10 True False PUSH10
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH10 False True PUSH10
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH10 True True PUSH10
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH11 False False PUSH11
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH11 True False PUSH11
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH11 False True PUSH11
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH11 True True PUSH11
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH12 False False PUSH12
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH12 True False PUSH12
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH12 False True PUSH12
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH12 True True PUSH12
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH13 False False PUSH13
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH13 True False PUSH13
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH13 False True PUSH13
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH13 True True PUSH13
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH14 False False PUSH14
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH14 True False PUSH14
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH14 False True PUSH14
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH14 True True PUSH14
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH15 False False PUSH15
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH15 True False PUSH15
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH15 False True PUSH15
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH15 True True PUSH15
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH16 False False PUSH16
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH16 True False PUSH16
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH16 False True PUSH16
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH16 True True PUSH16
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH17 False False PUSH17
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH17 True False PUSH17
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH17 False True PUSH17
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH17 True True PUSH17
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH18 False False PUSH18
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH18 True False PUSH18
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH18 False True PUSH18
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH18 True True PUSH18
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH19 False False PUSH19
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH19 True False PUSH19
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH19 False True PUSH19
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH19 True True PUSH19
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH20 False False PUSH20
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH20 True False PUSH20
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH20 False True PUSH20
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH20 True True PUSH20
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH21 False False PUSH21
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH21 True False PUSH21
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH21 False True PUSH21
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH21 True True PUSH21
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH22 False False PUSH22
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH22 True False PUSH22
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH22 False True PUSH22
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH22 True True PUSH22
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH23 False False PUSH23
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH23 True False PUSH23
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH23 False True PUSH23
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH23 True True PUSH23
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH24 False False PUSH24
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH24 True False PUSH24
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH24 False True PUSH24
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH24 True True PUSH24
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH25 False False PUSH25
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH25 True False PUSH25
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH25 False True PUSH25
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH25 True True PUSH25
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH26 False False PUSH26
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH26 True False PUSH26
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH26 False True PUSH26
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH26 True True PUSH26
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH27 False False PUSH27
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH27 True False PUSH27
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH27 False True PUSH27
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH27 True True PUSH27
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH28 False False PUSH28
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH28 True False PUSH28
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH28 False True PUSH28
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH28 True True PUSH28
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH29 False False PUSH29
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH29 True False PUSH29
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH29 False True PUSH29
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH29 True True PUSH29
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH30 False False PUSH30
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH30 True False PUSH30
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH30 False True PUSH30
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH30 True True PUSH30
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH31 False False PUSH31
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH31 True False PUSH31
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH31 False True PUSH31
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH31 True True PUSH31
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_PUSH32 False False PUSH32
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_PUSH32 True False PUSH32
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_PUSH32 False True PUSH32
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_PUSH32 True True PUSH32
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_DATALOADN False False DATALOADN
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_DATALOADN True False DATALOADN
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_DATALOADN False True DATALOADN
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_DATALOADN True True DATALOADN
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_RJUMP False False RJUMP
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_RJUMP False True RJUMP
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_RJUMPI False False RJUMPI
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_RJUMPI True False RJUMPI
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_RJUMPI False True RJUMPI
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_RJUMPI True True RJUMPI
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_RJUMPV False False RJUMPV
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_RJUMPV True False RJUMPV
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_RJUMPV False True RJUMPV
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_True-opcode_RJUMPV True True RJUMPV
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_CALLF False False CALLF
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_CALLF False True CALLF
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_JUMPF False False JUMPF
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_True-opcode_JUMPF False True JUMPF
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_DUPN False False DUPN
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_DUPN True False DUPN
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_SWAPN False False SWAPN
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_EXCHANGE False False EXCHANGE
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_EOFCREATE False False EOFCREATE
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_EOFCREATE True False EOFCREATE
...fork_Osaka-eof_test-compute_max_stack_height_False-truncate_all_False-opcode_RETURNCONTRACT False False RETURNCONTRACT
...fork_Osaka-eof_test-compute_max_stack_height_True-truncate_all_False-opcode_RETURNCONTRACT True False RETURNCONTRACT