perf bpf: Defer freeing string after possible strlen() on it
Arnaldo Carvalho de Melo
maintainerPATCH 1/1 perf bpf: Defer freeing string after possible strlen() on it
FYI: I'm carrying this on my tree:
---
This was detected by the gcc in Fedora Rawhide's gcc:
50 11.01 fedora:rawhide : FAIL gcc version 12.0.1 20220205 (Red Hat 12.0.1-0) (GCC)
inlined from 'bpf__config_obj' at util/bpf-loader.c:1242:9:
util/bpf-loader.c:1225:34: error: pointer 'map_opt' may be used after 'free' [-Werror=use-after-free]
1225 | *key_scan_pos += strlen(map_opt);
| ^~~~~~~~~~~~~~~
util/bpf-loader.c:1223:9: note: call to 'free' here
1223 | free(map_name);
| ^~~~~~~~~~~~~~
cc1: all warnings being treated as errorsSo do the calculations on the pointer before freeing it.
Fixes 04f9bf2bac72480c ("perf bpf-loader: Add missing '*' for key_scan_pos")
Cc Adrian Hunter <[email protected]>
Cc Ian Rogers <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Wang ShaoBo <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/util/bpf-loader.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
tools/perf/util/bpf-loader.c +2 -1
@@ -1220,9 +1220,10 @@ bpf__obj_config_map(struct bpf_object *obj,pr_debug ("ERROR: Invalid map config option '%s'\n" , map_opt); err = -BPF_LOADER_ERRNO__OBJCONF_MAP_OPT ; out: -free (map_name);if (!err) *key_scan_pos +=strlen (map_opt); + +free (map_name);return err; }
Signature · 1 line
2.34.1