forked from luck/tmp_suning_uos_patched
tools: bpftool: fix potential NULL pointer dereference in do_load
This patch fixes a possible null pointer dereference in
do_load, detected by the semantic patch deref_null.cocci,
with the following warning:
./tools/bpf/bpftool/prog.c:1021:23-25: ERROR: map_replace is NULL but dereferenced.
The following code has potential null pointer references:
881 map_replace = reallocarray(map_replace, old_map_fds + 1,
882 sizeof(*map_replace));
883 if (!map_replace) {
884 p_err("mem alloc failed");
885 goto err_free_reuse_maps;
886 }
...
1019 err_free_reuse_maps:
1020 for (i = 0; i < old_map_fds; i++)
1021 close(map_replace[i].fd);
1022 free(map_replace);
Fixes: 3ff5a4dc5d
("tools: bpftool: allow reuse of maps with bpftool prog load")
Co-developed-by: Wen Yang <wen.yang99@zte.com.cn>
Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
parent
569a933b03
commit
dde7011a82
|
@ -844,6 +844,7 @@ static int do_load(int argc, char **argv)
|
|||
}
|
||||
NEXT_ARG();
|
||||
} else if (is_prefix(*argv, "map")) {
|
||||
void *new_map_replace;
|
||||
char *endptr, *name;
|
||||
int fd;
|
||||
|
||||
|
@ -877,12 +878,15 @@ static int do_load(int argc, char **argv)
|
|||
if (fd < 0)
|
||||
goto err_free_reuse_maps;
|
||||
|
||||
map_replace = reallocarray(map_replace, old_map_fds + 1,
|
||||
sizeof(*map_replace));
|
||||
if (!map_replace) {
|
||||
new_map_replace = reallocarray(map_replace,
|
||||
old_map_fds + 1,
|
||||
sizeof(*map_replace));
|
||||
if (!new_map_replace) {
|
||||
p_err("mem alloc failed");
|
||||
goto err_free_reuse_maps;
|
||||
}
|
||||
map_replace = new_map_replace;
|
||||
|
||||
map_replace[old_map_fds].idx = idx;
|
||||
map_replace[old_map_fds].name = name;
|
||||
map_replace[old_map_fds].fd = fd;
|
||||
|
|
Loading…
Reference in New Issue
Block a user