From 04b21e3219f1094866701ef10f7049a17494bca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Mei=C3=9Fner?= Date: Thu, 3 Oct 2024 17:21:52 +0200 Subject: [PATCH] Enables the new opcodes conditionally in the verifier. --- src/verifier.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/verifier.rs b/src/verifier.rs index c82fad1dd..39158d596 100644 --- a/src/verifier.rs +++ b/src/verifier.rs @@ -274,8 +274,10 @@ impl Verifier for RequisiteVerifier { ebpf::SUB32_REG => {}, ebpf::MUL32_IMM if !sbpf_version.enable_pqr() => {}, ebpf::MUL32_REG if !sbpf_version.enable_pqr() => {}, + ebpf::LD_1B_REG if sbpf_version.move_memory_instruction_classes() => {}, ebpf::DIV32_IMM if !sbpf_version.enable_pqr() => { check_imm_nonzero(&insn, insn_ptr)?; }, ebpf::DIV32_REG if !sbpf_version.enable_pqr() => {}, + ebpf::LD_2B_REG if sbpf_version.move_memory_instruction_classes() => {}, ebpf::OR32_IMM => {}, ebpf::OR32_REG => {}, ebpf::AND32_IMM => {}, @@ -285,8 +287,10 @@ impl Verifier for RequisiteVerifier { ebpf::RSH32_IMM => { check_imm_shift(&insn, insn_ptr, 32)?; }, ebpf::RSH32_REG => {}, ebpf::NEG32 if sbpf_version.enable_neg() => {}, + ebpf::LD_4B_REG if sbpf_version.move_memory_instruction_classes() => {}, ebpf::MOD32_IMM if !sbpf_version.enable_pqr() => { check_imm_nonzero(&insn, insn_ptr)?; }, ebpf::MOD32_REG if !sbpf_version.enable_pqr() => {}, + ebpf::LD_8B_REG if sbpf_version.move_memory_instruction_classes() => {}, ebpf::XOR32_IMM => {}, ebpf::XOR32_REG => {}, ebpf::MOV32_IMM => {}, @@ -302,9 +306,13 @@ impl Verifier for RequisiteVerifier { ebpf::SUB64_IMM => {}, ebpf::SUB64_REG => {}, ebpf::MUL64_IMM if !sbpf_version.enable_pqr() => {}, + ebpf::ST_1B_IMM if sbpf_version.move_memory_instruction_classes() => store = true, ebpf::MUL64_REG if !sbpf_version.enable_pqr() => {}, + ebpf::ST_1B_REG if sbpf_version.move_memory_instruction_classes() => store = true, ebpf::DIV64_IMM if !sbpf_version.enable_pqr() => { check_imm_nonzero(&insn, insn_ptr)?; }, + ebpf::ST_2B_IMM if sbpf_version.move_memory_instruction_classes() => store = true, ebpf::DIV64_REG if !sbpf_version.enable_pqr() => {}, + ebpf::ST_2B_REG if sbpf_version.move_memory_instruction_classes() => store = true, ebpf::OR64_IMM => {}, ebpf::OR64_REG => {}, ebpf::AND64_IMM => {}, @@ -313,9 +321,13 @@ impl Verifier for RequisiteVerifier { ebpf::LSH64_REG => {}, ebpf::RSH64_IMM => { check_imm_shift(&insn, insn_ptr, 64)?; }, ebpf::RSH64_REG => {}, + ebpf::ST_4B_IMM if sbpf_version.move_memory_instruction_classes() => store = true, ebpf::NEG64 if sbpf_version.enable_neg() => {}, + ebpf::ST_4B_REG if sbpf_version.move_memory_instruction_classes() => store = true, ebpf::MOD64_IMM if !sbpf_version.enable_pqr() => { check_imm_nonzero(&insn, insn_ptr)?; }, + ebpf::ST_8B_IMM if sbpf_version.move_memory_instruction_classes() => store = true, ebpf::MOD64_REG if !sbpf_version.enable_pqr() => {}, + ebpf::ST_8B_REG if sbpf_version.move_memory_instruction_classes() => store = true, ebpf::XOR64_IMM => {}, ebpf::XOR64_REG => {}, ebpf::MOV64_IMM => {},