Message ID | 20200805223359.32109-1-danieltimlee@gmail.com |
---|---|
State | Accepted |
Delegated to: | BPF Maintainers |
Headers | show |
Series | [bpf-next] libbf: fix uninitialized pointer at btf__parse_raw() | expand |
Daniel T. Lee wrote: > Recently, from commit 94a1fedd63ed ("libbpf: Add btf__parse_raw() and > generic btf__parse() APIs"), new API has been added to libbpf that > allows to parse BTF from raw data file (btf__parse_raw()). > > The commit derives build failure of samples/bpf due to improper access > of uninitialized pointer at btf_parse_raw(). > > btf.c: In function btf__parse_raw: > btf.c:625:28: error: btf may be used uninitialized in this function > 625 | return err ? ERR_PTR(err) : btf; > | ~~~~~~~~~~~~~~~~~~~^~~~~ > > This commit fixes the build failure of samples/bpf by adding code of > initializing btf pointer as NULL. > > Fixes: 94a1fedd63ed ("libbpf: Add btf__parse_raw() and generic btf__parse() APIs") > Signed-off-by: Daniel T. Lee <danieltimlee@gmail.com> > --- Unless errno is zero this should be ok in practice, but I guess compiler wont know that. Acked-by: John Fastabend <john.fastabend@gmail.com>
On Wed, Aug 5, 2020 at 11:22 PM John Fastabend <john.fastabend@gmail.com> wrote: > > Daniel T. Lee wrote: > > Recently, from commit 94a1fedd63ed ("libbpf: Add btf__parse_raw() and > > generic btf__parse() APIs"), new API has been added to libbpf that > > allows to parse BTF from raw data file (btf__parse_raw()). > > > > The commit derives build failure of samples/bpf due to improper access > > of uninitialized pointer at btf_parse_raw(). > > > > btf.c: In function btf__parse_raw: > > btf.c:625:28: error: btf may be used uninitialized in this function > > 625 | return err ? ERR_PTR(err) : btf; > > | ~~~~~~~~~~~~~~~~~~~^~~~~ > > > > This commit fixes the build failure of samples/bpf by adding code of > > initializing btf pointer as NULL. > > > > Fixes: 94a1fedd63ed ("libbpf: Add btf__parse_raw() and generic btf__parse() APIs") > > Signed-off-by: Daniel T. Lee <danieltimlee@gmail.com> > > --- > > Unless errno is zero this should be ok in practice, but I guess compiler > wont know that. > > Acked-by: John Fastabend <john.fastabend@gmail.com> Applied. Thanks
diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c index 856b09a04563..4843e44916f7 100644 --- a/tools/lib/bpf/btf.c +++ b/tools/lib/bpf/btf.c @@ -564,8 +564,8 @@ struct btf *btf__parse_elf(const char *path, struct btf_ext **btf_ext) struct btf *btf__parse_raw(const char *path) { + struct btf *btf = NULL; void *data = NULL; - struct btf *btf; FILE *f = NULL; __u16 magic; int err = 0;
Recently, from commit 94a1fedd63ed ("libbpf: Add btf__parse_raw() and generic btf__parse() APIs"), new API has been added to libbpf that allows to parse BTF from raw data file (btf__parse_raw()). The commit derives build failure of samples/bpf due to improper access of uninitialized pointer at btf_parse_raw(). btf.c: In function btf__parse_raw: btf.c:625:28: error: btf may be used uninitialized in this function 625 | return err ? ERR_PTR(err) : btf; | ~~~~~~~~~~~~~~~~~~~^~~~~ This commit fixes the build failure of samples/bpf by adding code of initializing btf pointer as NULL. Fixes: 94a1fedd63ed ("libbpf: Add btf__parse_raw() and generic btf__parse() APIs") Signed-off-by: Daniel T. Lee <danieltimlee@gmail.com> --- tools/lib/bpf/btf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)