|
@@ -128,25 +128,25 @@ pub fn execute_program(prog_: Option<&[u8]>, mem: &[u8], mbuff: &[u8], helpers:
|
|
|
|
|
|
// BPF_LDX class
|
|
// BPF_LDX class
|
|
ebpf::LD_B_REG => reg[_dst] = unsafe {
|
|
ebpf::LD_B_REG => reg[_dst] = unsafe {
|
|
- #[allow(cast_ptr_alignment)]
|
|
|
|
|
|
+ #[allow(clippy::cast_ptr_alignment)]
|
|
let x = (reg[_src] as *const u8).offset(insn.off as isize) as *const u8;
|
|
let x = (reg[_src] as *const u8).offset(insn.off as isize) as *const u8;
|
|
check_mem_load(x as u64, 1, insn_ptr)?;
|
|
check_mem_load(x as u64, 1, insn_ptr)?;
|
|
x.read_unaligned() as u64
|
|
x.read_unaligned() as u64
|
|
},
|
|
},
|
|
ebpf::LD_H_REG => reg[_dst] = unsafe {
|
|
ebpf::LD_H_REG => reg[_dst] = unsafe {
|
|
- #[allow(cast_ptr_alignment)]
|
|
|
|
|
|
+ #[allow(clippy::cast_ptr_alignment)]
|
|
let x = (reg[_src] as *const u8).offset(insn.off as isize) as *const u16;
|
|
let x = (reg[_src] as *const u8).offset(insn.off as isize) as *const u16;
|
|
check_mem_load(x as u64, 2, insn_ptr)?;
|
|
check_mem_load(x as u64, 2, insn_ptr)?;
|
|
x.read_unaligned() as u64
|
|
x.read_unaligned() as u64
|
|
},
|
|
},
|
|
ebpf::LD_W_REG => reg[_dst] = unsafe {
|
|
ebpf::LD_W_REG => reg[_dst] = unsafe {
|
|
- #[allow(cast_ptr_alignment)]
|
|
|
|
|
|
+ #[allow(clippy::cast_ptr_alignment)]
|
|
let x = (reg[_src] as *const u8).offset(insn.off as isize) as *const u32;
|
|
let x = (reg[_src] as *const u8).offset(insn.off as isize) as *const u32;
|
|
check_mem_load(x as u64, 4, insn_ptr)?;
|
|
check_mem_load(x as u64, 4, insn_ptr)?;
|
|
x.read_unaligned() as u64
|
|
x.read_unaligned() as u64
|
|
},
|
|
},
|
|
ebpf::LD_DW_REG => reg[_dst] = unsafe {
|
|
ebpf::LD_DW_REG => reg[_dst] = unsafe {
|
|
- #[allow(cast_ptr_alignment)]
|
|
|
|
|
|
+ #[allow(clippy::cast_ptr_alignment)]
|
|
let x = (reg[_src] as *const u8).offset(insn.off as isize) as *const u64;
|
|
let x = (reg[_src] as *const u8).offset(insn.off as isize) as *const u64;
|
|
check_mem_load(x as u64, 8, insn_ptr)?;
|
|
check_mem_load(x as u64, 8, insn_ptr)?;
|
|
x.read_unaligned()
|
|
x.read_unaligned()
|
|
@@ -159,19 +159,19 @@ pub fn execute_program(prog_: Option<&[u8]>, mem: &[u8], mbuff: &[u8], helpers:
|
|
x.write_unaligned(insn.imm as u8);
|
|
x.write_unaligned(insn.imm as u8);
|
|
},
|
|
},
|
|
ebpf::ST_H_IMM => unsafe {
|
|
ebpf::ST_H_IMM => unsafe {
|
|
- #[allow(cast_ptr_alignment)]
|
|
|
|
|
|
+ #[allow(clippy::cast_ptr_alignment)]
|
|
let x = (reg[_dst] as *const u8).offset(insn.off as isize) as *mut u16;
|
|
let x = (reg[_dst] as *const u8).offset(insn.off as isize) as *mut u16;
|
|
check_mem_store(x as u64, 2, insn_ptr)?;
|
|
check_mem_store(x as u64, 2, insn_ptr)?;
|
|
x.write_unaligned(insn.imm as u16);
|
|
x.write_unaligned(insn.imm as u16);
|
|
},
|
|
},
|
|
ebpf::ST_W_IMM => unsafe {
|
|
ebpf::ST_W_IMM => unsafe {
|
|
- #[allow(cast_ptr_alignment)]
|
|
|
|
|
|
+ #[allow(clippy::cast_ptr_alignment)]
|
|
let x = (reg[_dst] as *const u8).offset(insn.off as isize) as *mut u32;
|
|
let x = (reg[_dst] as *const u8).offset(insn.off as isize) as *mut u32;
|
|
check_mem_store(x as u64, 4, insn_ptr)?;
|
|
check_mem_store(x as u64, 4, insn_ptr)?;
|
|
x.write_unaligned(insn.imm as u32);
|
|
x.write_unaligned(insn.imm as u32);
|
|
},
|
|
},
|
|
ebpf::ST_DW_IMM => unsafe {
|
|
ebpf::ST_DW_IMM => unsafe {
|
|
- #[allow(cast_ptr_alignment)]
|
|
|
|
|
|
+ #[allow(clippy::cast_ptr_alignment)]
|
|
let x = (reg[_dst] as *const u8).offset(insn.off as isize) as *mut u64;
|
|
let x = (reg[_dst] as *const u8).offset(insn.off as isize) as *mut u64;
|
|
check_mem_store(x as u64, 8, insn_ptr)?;
|
|
check_mem_store(x as u64, 8, insn_ptr)?;
|
|
x.write_unaligned(insn.imm as u64);
|
|
x.write_unaligned(insn.imm as u64);
|
|
@@ -184,19 +184,19 @@ pub fn execute_program(prog_: Option<&[u8]>, mem: &[u8], mbuff: &[u8], helpers:
|
|
x.write_unaligned(reg[_src] as u8);
|
|
x.write_unaligned(reg[_src] as u8);
|
|
},
|
|
},
|
|
ebpf::ST_H_REG => unsafe {
|
|
ebpf::ST_H_REG => unsafe {
|
|
- #[allow(cast_ptr_alignment)]
|
|
|
|
|
|
+ #[allow(clippy::cast_ptr_alignment)]
|
|
let x = (reg[_dst] as *const u8).offset(insn.off as isize) as *mut u16;
|
|
let x = (reg[_dst] as *const u8).offset(insn.off as isize) as *mut u16;
|
|
check_mem_store(x as u64, 2, insn_ptr)?;
|
|
check_mem_store(x as u64, 2, insn_ptr)?;
|
|
x.write_unaligned(reg[_src] as u16);
|
|
x.write_unaligned(reg[_src] as u16);
|
|
},
|
|
},
|
|
ebpf::ST_W_REG => unsafe {
|
|
ebpf::ST_W_REG => unsafe {
|
|
- #[allow(cast_ptr_alignment)]
|
|
|
|
|
|
+ #[allow(clippy::cast_ptr_alignment)]
|
|
let x = (reg[_dst] as *const u8).offset(insn.off as isize) as *mut u32;
|
|
let x = (reg[_dst] as *const u8).offset(insn.off as isize) as *mut u32;
|
|
check_mem_store(x as u64, 4, insn_ptr)?;
|
|
check_mem_store(x as u64, 4, insn_ptr)?;
|
|
x.write_unaligned(reg[_src] as u32);
|
|
x.write_unaligned(reg[_src] as u32);
|
|
},
|
|
},
|
|
ebpf::ST_DW_REG => unsafe {
|
|
ebpf::ST_DW_REG => unsafe {
|
|
- #[allow(cast_ptr_alignment)]
|
|
|
|
|
|
+ #[allow(clippy::cast_ptr_alignment)]
|
|
let x = (reg[_dst] as *const u8).offset(insn.off as isize) as *mut u64;
|
|
let x = (reg[_dst] as *const u8).offset(insn.off as isize) as *mut u64;
|
|
check_mem_store(x as u64, 8, insn_ptr)?;
|
|
check_mem_store(x as u64, 8, insn_ptr)?;
|
|
x.write_unaligned(reg[_src]);
|
|
x.write_unaligned(reg[_src]);
|