mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 14:50:19 +00:00
libbpf: Fix realloc usage in bpf_core_find_cands
Fix bug requesting invalid size of reallocated array when constructing CO-RE relocation candidate list. This can cause problems if there are many potential candidates and a very fine-grained memory allocator bucket sizes are used. Fixes: ddc7c3042614 ("libbpf: implement BPF CO-RE offset relocation algorithm") Reported-by: William Smith <williampsmith@fb.com> Signed-off-by: Andrii Nakryiko <andriin@fb.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Yonghong Song <yhs@fb.com> Link: https://lore.kernel.org/bpf/20200124201847.212528-1-andriin@fb.com
This commit is contained in:
parent
d7a252708d
commit
35b9211c0a
@ -3869,7 +3869,9 @@ static struct ids_vec *bpf_core_find_cands(const struct btf *local_btf,
|
|||||||
if (strncmp(local_name, targ_name, local_essent_len) == 0) {
|
if (strncmp(local_name, targ_name, local_essent_len) == 0) {
|
||||||
pr_debug("[%d] %s: found candidate [%d] %s\n",
|
pr_debug("[%d] %s: found candidate [%d] %s\n",
|
||||||
local_type_id, local_name, i, targ_name);
|
local_type_id, local_name, i, targ_name);
|
||||||
new_ids = realloc(cand_ids->data, cand_ids->len + 1);
|
new_ids = reallocarray(cand_ids->data,
|
||||||
|
cand_ids->len + 1,
|
||||||
|
sizeof(*cand_ids->data));
|
||||||
if (!new_ids) {
|
if (!new_ids) {
|
||||||
err = -ENOMEM;
|
err = -ENOMEM;
|
||||||
goto err_out;
|
goto err_out;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user