diff options
author | Jakub Kicinski <jakub.kicinski@netronome.com> | 2018-07-26 14:32:18 -0700 |
---|---|---|
committer | Daniel Borkmann <daniel@iogearbox.net> | 2018-07-27 07:18:44 +0200 |
commit | 1e960043e8ae65d6f53b3414586a3fb634461908 (patch) | |
tree | 7fe3914c4ce7da570106058da6d6a32007fd702f /tools | |
parent | 2367bd99f62bd952fea5c534eeb1d84c113da38e (diff) | |
download | linux-1e960043e8ae65d6f53b3414586a3fb634461908.tar.gz linux-1e960043e8ae65d6f53b3414586a3fb634461908.tar.bz2 linux-1e960043e8ae65d6f53b3414586a3fb634461908.zip |
tools: libbpf: handle NULL program gracefully in bpf_program__nth_fd()
bpf_map__fd() handles NULL map gracefully and returns -EINVAL.
bpf_program__fd() and bpf_program__nth_fd() crash in this case.
Make the behaviour more consistent by validating prog pointer
as well.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Quentin Monnet <quentin.monnet@netronome.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/lib/bpf/libbpf.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 955f8eafbf41..afa9860db755 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -1991,6 +1991,9 @@ int bpf_program__nth_fd(struct bpf_program *prog, int n) { int fd; + if (!prog) + return -EINVAL; + if (n >= prog->instances.nr || n < 0) { pr_warning("Can't get the %dth fd from program %s: only %d instances\n", n, prog->section_name, prog->instances.nr); |