brintos

brintos / linux-shallow public Read only

0
0
Text · 4.5 KiB · bd928a7 Raw
220 lines · c
1{2	"add+sub+mul",3	.insns = {4	BPF_MOV64_IMM(BPF_REG_1, 1),5	BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, 2),6	BPF_MOV64_IMM(BPF_REG_2, 3),7	BPF_ALU64_REG(BPF_SUB, BPF_REG_1, BPF_REG_2),8	BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, -1),9	BPF_ALU64_IMM(BPF_MUL, BPF_REG_1, 3),10	BPF_MOV64_REG(BPF_REG_0, BPF_REG_1),11	BPF_EXIT_INSN(),12	},13	.result = ACCEPT,14	.retval = -3,15},16{17	"xor32 zero extend check",18	.insns = {19	BPF_MOV32_IMM(BPF_REG_2, -1),20	BPF_ALU64_IMM(BPF_LSH, BPF_REG_2, 32),21	BPF_ALU64_IMM(BPF_OR, BPF_REG_2, 0xffff),22	BPF_ALU32_REG(BPF_XOR, BPF_REG_2, BPF_REG_2),23	BPF_MOV32_IMM(BPF_REG_0, 2),24	BPF_JMP_IMM(BPF_JNE, BPF_REG_2, 0, 1),25	BPF_MOV32_IMM(BPF_REG_0, 1),26	BPF_EXIT_INSN(),27	},28	.prog_type = BPF_PROG_TYPE_SCHED_CLS,29	.result = ACCEPT,30	.retval = 1,31},32{33	"arsh32 on imm",34	.insns = {35	BPF_MOV64_IMM(BPF_REG_0, 1),36	BPF_ALU32_IMM(BPF_ARSH, BPF_REG_0, 5),37	BPF_EXIT_INSN(),38	},39	.result = ACCEPT,40	.retval = 0,41},42{43	"arsh32 on imm 2",44	.insns = {45	BPF_LD_IMM64(BPF_REG_0, 0x1122334485667788),46	BPF_ALU32_IMM(BPF_ARSH, BPF_REG_0, 7),47	BPF_EXIT_INSN(),48	},49	.result = ACCEPT,50	.retval = -16069393,51},52{53	"arsh32 on reg",54	.insns = {55	BPF_MOV64_IMM(BPF_REG_0, 1),56	BPF_MOV64_IMM(BPF_REG_1, 5),57	BPF_ALU32_REG(BPF_ARSH, BPF_REG_0, BPF_REG_1),58	BPF_EXIT_INSN(),59	},60	.result = ACCEPT,61	.retval = 0,62},63{64	"arsh32 on reg 2",65	.insns = {66	BPF_LD_IMM64(BPF_REG_0, 0xffff55667788),67	BPF_MOV64_IMM(BPF_REG_1, 15),68	BPF_ALU32_REG(BPF_ARSH, BPF_REG_0, BPF_REG_1),69	BPF_EXIT_INSN(),70	},71	.result = ACCEPT,72	.retval = 43724,73},74{75	"arsh64 on imm",76	.insns = {77	BPF_MOV64_IMM(BPF_REG_0, 1),78	BPF_ALU64_IMM(BPF_ARSH, BPF_REG_0, 5),79	BPF_EXIT_INSN(),80	},81	.result = ACCEPT,82},83{84	"arsh64 on reg",85	.insns = {86	BPF_MOV64_IMM(BPF_REG_0, 1),87	BPF_MOV64_IMM(BPF_REG_1, 5),88	BPF_ALU64_REG(BPF_ARSH, BPF_REG_0, BPF_REG_1),89	BPF_EXIT_INSN(),90	},91	.result = ACCEPT,92},93{94	"lsh64 by 0 imm",95	.insns = {96	BPF_LD_IMM64(BPF_REG_0, 1),97	BPF_LD_IMM64(BPF_REG_1, 1),98	BPF_ALU64_IMM(BPF_LSH, BPF_REG_1, 0),99	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 1, 1),100	BPF_MOV64_IMM(BPF_REG_0, 2),101	BPF_EXIT_INSN(),102	},103	.result = ACCEPT,104	.retval = 1,105},106{107	"rsh64 by 0 imm",108	.insns = {109	BPF_LD_IMM64(BPF_REG_0, 1),110	BPF_LD_IMM64(BPF_REG_1, 0x100000000LL),111	BPF_ALU64_REG(BPF_MOV, BPF_REG_2, BPF_REG_1),112	BPF_ALU64_IMM(BPF_RSH, BPF_REG_1, 0),113	BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_2, 1),114	BPF_MOV64_IMM(BPF_REG_0, 2),115	BPF_EXIT_INSN(),116	},117	.result = ACCEPT,118	.retval = 1,119},120{121	"arsh64 by 0 imm",122	.insns = {123	BPF_LD_IMM64(BPF_REG_0, 1),124	BPF_LD_IMM64(BPF_REG_1, 0x100000000LL),125	BPF_ALU64_REG(BPF_MOV, BPF_REG_2, BPF_REG_1),126	BPF_ALU64_IMM(BPF_ARSH, BPF_REG_1, 0),127	BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_2, 1),128	BPF_MOV64_IMM(BPF_REG_0, 2),129	BPF_EXIT_INSN(),130	},131	.result = ACCEPT,132	.retval = 1,133},134{135	"lsh64 by 0 reg",136	.insns = {137	BPF_LD_IMM64(BPF_REG_0, 1),138	BPF_LD_IMM64(BPF_REG_1, 1),139	BPF_LD_IMM64(BPF_REG_2, 0),140	BPF_ALU64_REG(BPF_LSH, BPF_REG_1, BPF_REG_2),141	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 1, 1),142	BPF_MOV64_IMM(BPF_REG_0, 2),143	BPF_EXIT_INSN(),144	},145	.result = ACCEPT,146	.retval = 1,147},148{149	"rsh64 by 0 reg",150	.insns = {151	BPF_LD_IMM64(BPF_REG_0, 1),152	BPF_LD_IMM64(BPF_REG_1, 0x100000000LL),153	BPF_ALU64_REG(BPF_MOV, BPF_REG_2, BPF_REG_1),154	BPF_LD_IMM64(BPF_REG_3, 0),155	BPF_ALU64_REG(BPF_RSH, BPF_REG_1, BPF_REG_3),156	BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_2, 1),157	BPF_MOV64_IMM(BPF_REG_0, 2),158	BPF_EXIT_INSN(),159	},160	.result = ACCEPT,161	.retval = 1,162},163{164	"arsh64 by 0 reg",165	.insns = {166	BPF_LD_IMM64(BPF_REG_0, 1),167	BPF_LD_IMM64(BPF_REG_1, 0x100000000LL),168	BPF_ALU64_REG(BPF_MOV, BPF_REG_2, BPF_REG_1),169	BPF_LD_IMM64(BPF_REG_3, 0),170	BPF_ALU64_REG(BPF_ARSH, BPF_REG_1, BPF_REG_3),171	BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_2, 1),172	BPF_MOV64_IMM(BPF_REG_0, 2),173	BPF_EXIT_INSN(),174	},175	.result = ACCEPT,176	.retval = 1,177},178{179	"invalid 64-bit BPF_END with BPF_TO_BE",180	.insns = {181	BPF_MOV32_IMM(BPF_REG_0, 0),182	{183		.code  = BPF_ALU64 | BPF_END | BPF_TO_BE,184		.dst_reg = BPF_REG_0,185		.src_reg = 0,186		.off   = 0,187		.imm   = 32,188	},189	BPF_EXIT_INSN(),190	},191	.errstr = "unknown opcode df",192	.result = REJECT,193},194{195	"mov64 src == dst",196	.insns = {197	BPF_MOV64_IMM(BPF_REG_2, 0),198	BPF_MOV64_REG(BPF_REG_2, BPF_REG_2),199	// Check bounds are OK200	BPF_ALU64_REG(BPF_ADD, BPF_REG_1, BPF_REG_2),201	BPF_MOV64_IMM(BPF_REG_0, 0),202	BPF_EXIT_INSN(),203	},204	.prog_type = BPF_PROG_TYPE_SCHED_CLS,205	.result = ACCEPT,206},207{208	"mov64 src != dst",209	.insns = {210	BPF_MOV64_IMM(BPF_REG_3, 0),211	BPF_MOV64_REG(BPF_REG_2, BPF_REG_3),212	// Check bounds are OK213	BPF_ALU64_REG(BPF_ADD, BPF_REG_1, BPF_REG_2),214	BPF_MOV64_IMM(BPF_REG_0, 0),215	BPF_EXIT_INSN(),216	},217	.prog_type = BPF_PROG_TYPE_SCHED_CLS,218	.result = ACCEPT,219},220