1
2
3
4
5 {
6 "DIV32 overflow, check 1",
7 .insns = {
8 BPF_MOV32_IMM(BPF_REG_1, -1),
9 BPF_MOV32_IMM(BPF_REG_0, INT_MIN),
10 BPF_ALU32_REG(BPF_DIV, BPF_REG_0, BPF_REG_1),
11 BPF_EXIT_INSN(),
12 },
13 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
14 .result = ACCEPT,
15 .retval = 0,
16 },
17 {
18 "DIV32 overflow, check 2",
19 .insns = {
20 BPF_MOV32_IMM(BPF_REG_0, INT_MIN),
21 BPF_ALU32_IMM(BPF_DIV, BPF_REG_0, -1),
22 BPF_EXIT_INSN(),
23 },
24 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
25 .result = ACCEPT,
26 .retval = 0,
27 },
28 {
29 "DIV64 overflow, check 1",
30 .insns = {
31 BPF_MOV64_IMM(BPF_REG_1, -1),
32 BPF_LD_IMM64(BPF_REG_2, LLONG_MIN),
33 BPF_ALU64_REG(BPF_DIV, BPF_REG_2, BPF_REG_1),
34 BPF_MOV32_IMM(BPF_REG_0, 0),
35 BPF_JMP_REG(BPF_JEQ, BPF_REG_0, BPF_REG_2, 1),
36 BPF_MOV32_IMM(BPF_REG_0, 1),
37 BPF_EXIT_INSN(),
38 },
39 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
40 .result = ACCEPT,
41 .retval = 0,
42 },
43 {
44 "DIV64 overflow, check 2",
45 .insns = {
46 BPF_LD_IMM64(BPF_REG_1, LLONG_MIN),
47 BPF_ALU64_IMM(BPF_DIV, BPF_REG_1, -1),
48 BPF_MOV32_IMM(BPF_REG_0, 0),
49 BPF_JMP_REG(BPF_JEQ, BPF_REG_0, BPF_REG_1, 1),
50 BPF_MOV32_IMM(BPF_REG_0, 1),
51 BPF_EXIT_INSN(),
52 },
53 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
54 .result = ACCEPT,
55 .retval = 0,
56 },
57 {
58 "MOD32 overflow, check 1",
59 .insns = {
60 BPF_MOV32_IMM(BPF_REG_1, -1),
61 BPF_MOV32_IMM(BPF_REG_0, INT_MIN),
62 BPF_ALU32_REG(BPF_MOD, BPF_REG_0, BPF_REG_1),
63 BPF_EXIT_INSN(),
64 },
65 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
66 .result = ACCEPT,
67 .retval = INT_MIN,
68 },
69 {
70 "MOD32 overflow, check 2",
71 .insns = {
72 BPF_MOV32_IMM(BPF_REG_0, INT_MIN),
73 BPF_ALU32_IMM(BPF_MOD, BPF_REG_0, -1),
74 BPF_EXIT_INSN(),
75 },
76 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
77 .result = ACCEPT,
78 .retval = INT_MIN,
79 },
80 {
81 "MOD64 overflow, check 1",
82 .insns = {
83 BPF_MOV64_IMM(BPF_REG_1, -1),
84 BPF_LD_IMM64(BPF_REG_2, LLONG_MIN),
85 BPF_MOV64_REG(BPF_REG_3, BPF_REG_2),
86 BPF_ALU64_REG(BPF_MOD, BPF_REG_2, BPF_REG_1),
87 BPF_MOV32_IMM(BPF_REG_0, 0),
88 BPF_JMP_REG(BPF_JNE, BPF_REG_3, BPF_REG_2, 1),
89 BPF_MOV32_IMM(BPF_REG_0, 1),
90 BPF_EXIT_INSN(),
91 },
92 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
93 .result = ACCEPT,
94 .retval = 1,
95 },
96 {
97 "MOD64 overflow, check 2",
98 .insns = {
99 BPF_LD_IMM64(BPF_REG_2, LLONG_MIN),
100 BPF_MOV64_REG(BPF_REG_3, BPF_REG_2),
101 BPF_ALU64_IMM(BPF_MOD, BPF_REG_2, -1),
102 BPF_MOV32_IMM(BPF_REG_0, 0),
103 BPF_JMP_REG(BPF_JNE, BPF_REG_3, BPF_REG_2, 1),
104 BPF_MOV32_IMM(BPF_REG_0, 1),
105 BPF_EXIT_INSN(),
106 },
107 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
108 .result = ACCEPT,
109 .retval = 1,
110 },