| From 0394ad47638d5417cb4d071dbf52c14e7c042fc4 Mon Sep 17 00:00:00 2001 |
| From: Andrii Nakryiko <andriin@fb.com> |
| Date: Wed, 6 Nov 2019 18:08:54 -0800 |
| Subject: [PATCH] libbpf: Make btf__resolve_size logic always check size error |
| condition |
| |
| commit 994021a7e08477f7e51285920aac99fc967fae8a upstream. |
| |
| Perform size check always in btf__resolve_size. Makes the logic a bit more |
| robust against corrupted BTF and silences LGTM/Coverity complaining about |
| always true (size < 0) check. |
| |
| Fixes: 69eaab04c675 ("btf: extract BTF type size calculation") |
| Signed-off-by: Andrii Nakryiko <andriin@fb.com> |
| Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> |
| Link: https://lore.kernel.org/bpf/20191107020855.3834758-5-andriin@fb.com |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c |
| index 03348c4d6bd4..0c94d53ec796 100644 |
| --- a/tools/lib/bpf/btf.c |
| +++ b/tools/lib/bpf/btf.c |
| @@ -316,10 +316,9 @@ __s64 btf__resolve_size(const struct btf *btf, __u32 type_id) |
| t = btf__type_by_id(btf, type_id); |
| } |
| |
| +done: |
| if (size < 0) |
| return -EINVAL; |
| - |
| -done: |
| if (nelems && size > UINT32_MAX / nelems) |
| return -E2BIG; |
| |
| -- |
| 2.7.4 |
| |