summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2023-04-12 09:50:08 -0300
committerArnaldo Carvalho de Melo <acme@redhat.com>2023-04-12 10:06:11 -0300
commita77f8184a07cbe81cdee30582640ed1b412705fc (patch)
treeaebb8b9c10d4d65894661b16eb7d21b4e3c02e27 /tools
parentcdf13c0918c9b1b233d6db690fc4c06afbc29e57 (diff)
downloadlinux-stable-a77f8184a07cbe81cdee30582640ed1b412705fc.tar.gz
linux-stable-a77f8184a07cbe81cdee30582640ed1b412705fc.tar.bz2
linux-stable-a77f8184a07cbe81cdee30582640ed1b412705fc.zip
perf expr: Use zfree() to reduce chances of use after free
Do defensive programming by using zfree() to initialize freed pointers to NULL, so that eventual use after free result in a NULL pointer deref instead of more subtle behaviour. Also remove one NULL test before free(), as it accepts a NULL arg and we get one line shaved not doing it explicitely. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/perf/util/expr.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/tools/perf/util/expr.c b/tools/perf/util/expr.c
index bb6ddad7e021..f4e52919324e 100644
--- a/tools/perf/util/expr.c
+++ b/tools/perf/util/expr.c
@@ -86,8 +86,8 @@ void ids__free(struct hashmap *ids)
return;
hashmap__for_each_entry(ids, cur, bkt) {
- free((void *)cur->pkey);
- free((void *)cur->pvalue);
+ zfree(&cur->pkey);
+ zfree(&cur->pvalue);
}
hashmap__free(ids);
@@ -311,8 +311,8 @@ void expr__ctx_clear(struct expr_parse_ctx *ctx)
size_t bkt;
hashmap__for_each_entry(ctx->ids, cur, bkt) {
- free((void *)cur->pkey);
- free(cur->pvalue);
+ zfree(&cur->pkey);
+ zfree(&cur->pvalue);
}
hashmap__clear(ctx->ids);
}
@@ -325,10 +325,10 @@ void expr__ctx_free(struct expr_parse_ctx *ctx)
if (!ctx)
return;
- free(ctx->sctx.user_requested_cpu_list);
+ zfree(&ctx->sctx.user_requested_cpu_list);
hashmap__for_each_entry(ctx->ids, cur, bkt) {
- free((void *)cur->pkey);
- free(cur->pvalue);
+ zfree(&cur->pkey);
+ zfree(&cur->pvalue);
}
hashmap__free(ctx->ids);
free(ctx);