// SPDX-License-Identifier: GPL-2.0
/* Converted from tools/testing/selftests/bpf/verifier/masking.c */
#include <linux/bpf.h>
#include <bpf/bpf_helpers.h>
#include "bpf_misc.h"
SEC("socket" )
__description("masking, test out of bounds 1" )
__success __success_unpriv __retval(0 )
__naked void test_out_of_bounds_1(void )
{
asm volatile (" \
w1 = 5 ; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 5 - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test out of bounds 2" )
__success __success_unpriv __retval(0 )
__naked void test_out_of_bounds_2(void )
{
asm volatile (" \
w1 = 1 ; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 1 - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test out of bounds 3" )
__success __success_unpriv __retval(0 )
__naked void test_out_of_bounds_3(void )
{
asm volatile (" \
w1 = 0 xffffffff; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 0 xffffffff - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test out of bounds 4" )
__success __success_unpriv __retval(0 )
__naked void test_out_of_bounds_4(void )
{
asm volatile (" \
w1 = 0 xffffffff; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 1 - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test out of bounds 5" )
__success __success_unpriv __retval(0 )
__naked void test_out_of_bounds_5(void )
{
asm volatile (" \
w1 = -1 ; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 1 - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test out of bounds 6" )
__success __success_unpriv __retval(0 )
__naked void test_out_of_bounds_6(void )
{
asm volatile (" \
w1 = -1 ; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 0 xffffffff - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test out of bounds 7" )
__success __success_unpriv __retval(0 )
__naked void test_out_of_bounds_7(void )
{
asm volatile (" \
r1 = 5 ; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 5 - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test out of bounds 8" )
__success __success_unpriv __retval(0 )
__naked void test_out_of_bounds_8(void )
{
asm volatile (" \
r1 = 1 ; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 1 - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test out of bounds 9" )
__success __success_unpriv __retval(0 )
__naked void test_out_of_bounds_9(void )
{
asm volatile (" \
r1 = 0 xffffffff; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 0 xffffffff - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test out of bounds 10" )
__success __success_unpriv __retval(0 )
__naked void test_out_of_bounds_10(void )
{
asm volatile (" \
r1 = 0 xffffffff; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 1 - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test out of bounds 11" )
__success __success_unpriv __retval(0 )
__naked void test_out_of_bounds_11(void )
{
asm volatile (" \
r1 = -1 ; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 1 - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test out of bounds 12" )
__success __success_unpriv __retval(0 )
__naked void test_out_of_bounds_12(void )
{
asm volatile (" \
r1 = -1 ; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 0 xffffffff - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test in bounds 1" )
__success __success_unpriv __retval(4 )
__naked void masking_test_in_bounds_1(void )
{
asm volatile (" \
w1 = 4 ; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 5 - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test in bounds 2" )
__success __success_unpriv __retval(0 )
__naked void masking_test_in_bounds_2(void )
{
asm volatile (" \
w1 = 0 ; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 0 xffffffff - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test in bounds 3" )
__success __success_unpriv __retval(0 xfffffffe)
__naked void masking_test_in_bounds_3(void )
{
asm volatile (" \
w1 = 0 xfffffffe; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 0 xffffffff - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test in bounds 4" )
__success __success_unpriv __retval(0 xabcde)
__naked void masking_test_in_bounds_4(void )
{
asm volatile (" \
w1 = 0 xabcde; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 0 xabcdef - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test in bounds 5" )
__success __success_unpriv __retval(0 )
__naked void masking_test_in_bounds_5(void )
{
asm volatile (" \
w1 = 0 ; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 1 - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test in bounds 6" )
__success __success_unpriv __retval(46 )
__naked void masking_test_in_bounds_6(void )
{
asm volatile (" \
w1 = 46 ; \
w2 = %[__imm_0]; \
r2 -= r1; \
r2 |= r1; \
r2 = -r2; \
r2 s>>= 63 ; \
r1 &= r2; \
r0 = r1; \
exit ; \
" :
: __imm_const(__imm_0, 47 - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test in bounds 7" )
__success __success_unpriv __retval(46 )
__naked void masking_test_in_bounds_7(void )
{
asm volatile (" \
r3 = -46 ; \
r3 *= -1 ; \
w2 = %[__imm_0]; \
r2 -= r3; \
r2 |= r3; \
r2 = -r2; \
r2 s>>= 63 ; \
r3 &= r2; \
r0 = r3; \
exit ; \
" :
: __imm_const(__imm_0, 47 - 1 )
: __clobber_all);
}
SEC("socket" )
__description("masking, test in bounds 8" )
__success __success_unpriv __retval(0 )
__naked void masking_test_in_bounds_8(void )
{
asm volatile (" \
r3 = -47 ; \
r3 *= -1 ; \
w2 = %[__imm_0]; \
r2 -= r3; \
r2 |= r3; \
r2 = -r2; \
r2 s>>= 63 ; \
r3 &= r2; \
r0 = r3; \
exit ; \
" :
: __imm_const(__imm_0, 47 - 1 )
: __clobber_all);
}
char _license[] SEC("license" ) = "GPL" ;
Messung V0.5 in Prozent C=97 H=90 G=93
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-05)
¤
*© Formatika GbR, Deutschland