perf c2c: Use zfree() to reduce chances of use after free
authorArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 12 Apr 2023 12:50:08 +0000 (09:50 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 12 Apr 2023 12:55:10 +0000 (09:55 -0300)
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.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-c2c.c

index 6c12f08658606e4590c6535668148e7f0cabf5ee..08455e26b606f643183e29bbce729985e438b33f 100644 (file)
@@ -165,8 +165,8 @@ static void *c2c_he_zalloc(size_t size)
        return &c2c_he->he;
 
 out_free:
-       free(c2c_he->nodeset);
-       free(c2c_he->cpuset);
+       zfree(&c2c_he->nodeset);
+       zfree(&c2c_he->cpuset);
        free(c2c_he);
        return NULL;
 }
@@ -178,13 +178,13 @@ static void c2c_he_free(void *he)
        c2c_he = container_of(he, struct c2c_hist_entry, he);
        if (c2c_he->hists) {
                hists__delete_entries(&c2c_he->hists->hists);
-               free(c2c_he->hists);
+               zfree(&c2c_he->hists);
        }
 
-       free(c2c_he->cpuset);
-       free(c2c_he->nodeset);
-       free(c2c_he->nodestr);
-       free(c2c_he->node_stats);
+       zfree(&c2c_he->cpuset);
+       zfree(&c2c_he->nodeset);
+       zfree(&c2c_he->nodestr);
+       zfree(&c2c_he->node_stats);
        free(c2c_he);
 }