Commit 4ee507c
bpf: Correctly reject negative offsets for ALU ops
When verifying BPF programs, the check_alu_op() function validates
instructions with ALU operations. The 'offset' field in these
instructions is a signed 16-bit integer.
The existing check 'insn->off > 1' was intended to ensure the offset is
either 0, or 1 for BPF_MOD/BPF_DIV. However, because 'insn->off' is
signed, this check incorrectly accepts all negative values (e.g., -1).
This commit tightens the validation by changing the condition to
'(insn->off != 0 && insn->off != 1)'. This ensures that any value
other than the explicitly permitted 0 and 1 is rejected, hardening the
verifier against malformed BPF programs.
Co-developed-by: Shenghao Yuan <[email protected]>
Signed-off-by: Shenghao Yuan <[email protected]>
Co-developed-by: Tianci Cao <[email protected]>
Signed-off-by: Tianci Cao <[email protected]>
Signed-off-by: Yazhou Tang <[email protected]>1 parent 9043deb commit 4ee507c
1 file changed
+2
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15739 | 15739 | | |
15740 | 15740 | | |
15741 | 15741 | | |
15742 | | - | |
| 15742 | + | |
15743 | 15743 | | |
15744 | 15744 | | |
15745 | 15745 | | |
| |||
15749 | 15749 | | |
15750 | 15750 | | |
15751 | 15751 | | |
15752 | | - | |
| 15752 | + | |
15753 | 15753 | | |
15754 | 15754 | | |
15755 | 15755 | | |
| |||
0 commit comments