• Yafang Shao's avatar
    libbpf: Fix possible NULL pointer dereference when destroying skeleton · a32ea51a
    Yafang Shao authored
    When I checked the code in skeleton header file generated with my own
    bpf prog, I found there may be possible NULL pointer dereference when
    destroying skeleton. Then I checked the in-tree bpf progs, finding that is
    a common issue. Let's take the generated samples/bpf/xdp_redirect_cpu.skel.h
    for example. Below is the generated code in
    xdp_redirect_cpu__create_skeleton():
    
    	xdp_redirect_cpu__create_skeleton
    		struct bpf_object_skeleton *s;
    		s = (struct bpf_object_skeleton *)calloc(1, sizeof(*s));
    		if (!s)
    			goto error;
    		...
    	error:
    		bpf_object__destroy_skeleton(s);
    		return  -ENOMEM;
    
    After goto error, the NULL 's' will be deferenced in
    bpf_object__destroy_skeleton().
    
    We can simply fix this issue by just adding a NULL check in
    bpf_object__destroy_skeleton().
    
    Fixes: d66562fb ("libbpf: Add BPF object skeleton support")
    Signed-off-by: default avatarYafang Shao <laoar.shao@gmail.com>
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20220108134739.32541-1-laoar.shao@gmail.com
    a32ea51a
libbpf.c 307 KB