xref: /aosp_15_r20/external/libbpf/fuzz/bpf-object-fuzzer.c (revision f7c14bbac8cf49633f2740db462ea43457973ec4)
1*f7c14bbaSAndroid Build Coastguard Worker #include "libbpf.h"
2*f7c14bbaSAndroid Build Coastguard Worker 
libbpf_print_fn(enum libbpf_print_level level,const char * format,va_list args)3*f7c14bbaSAndroid Build Coastguard Worker static int libbpf_print_fn(enum libbpf_print_level level, const char *format, va_list args)
4*f7c14bbaSAndroid Build Coastguard Worker {
5*f7c14bbaSAndroid Build Coastguard Worker 	return 0;
6*f7c14bbaSAndroid Build Coastguard Worker }
7*f7c14bbaSAndroid Build Coastguard Worker 
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)8*f7c14bbaSAndroid Build Coastguard Worker int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
9*f7c14bbaSAndroid Build Coastguard Worker 	struct bpf_object *obj = NULL;
10*f7c14bbaSAndroid Build Coastguard Worker 	DECLARE_LIBBPF_OPTS(bpf_object_open_opts, opts);
11*f7c14bbaSAndroid Build Coastguard Worker 	int err;
12*f7c14bbaSAndroid Build Coastguard Worker 
13*f7c14bbaSAndroid Build Coastguard Worker 	libbpf_set_print(libbpf_print_fn);
14*f7c14bbaSAndroid Build Coastguard Worker 
15*f7c14bbaSAndroid Build Coastguard Worker 	opts.object_name = "fuzz-object";
16*f7c14bbaSAndroid Build Coastguard Worker 	obj = bpf_object__open_mem(data, size, &opts);
17*f7c14bbaSAndroid Build Coastguard Worker 	err = libbpf_get_error(obj);
18*f7c14bbaSAndroid Build Coastguard Worker 	if (err)
19*f7c14bbaSAndroid Build Coastguard Worker 		return 0;
20*f7c14bbaSAndroid Build Coastguard Worker 
21*f7c14bbaSAndroid Build Coastguard Worker 	bpf_object__close(obj);
22*f7c14bbaSAndroid Build Coastguard Worker 	return 0;
23*f7c14bbaSAndroid Build Coastguard Worker }
24