perf daemon: 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:52:29 +0000 (09:52 -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-daemon.c

index 7036ec92d47d01886468bc24f2389ded5b215f13..34cbe3e959aaf98a2e8bed9e7c085e441d8108c6 100644 (file)
@@ -193,7 +193,7 @@ static int session_config(struct daemon *daemon, const char *var, const char *va
 
                if (!same) {
                        if (session->run) {
-                               free(session->run);
+                               zfree(&session->run);
                                pr_debug("reconfig: session %s is changed\n", name);
                        }
 
@@ -924,9 +924,9 @@ static void daemon__signal(struct daemon *daemon, int sig)
 
 static void daemon_session__delete(struct daemon_session *session)
 {
-       free(session->base);
-       free(session->name);
-       free(session->run);
+       zfree(&session->base);
+       zfree(&session->name);
+       zfree(&session->run);
        free(session);
 }
 
@@ -975,9 +975,9 @@ static void daemon__exit(struct daemon *daemon)
        list_for_each_entry_safe(session, h, &daemon->sessions, list)
                daemon_session__remove(session);
 
-       free(daemon->config_real);
-       free(daemon->config_base);
-       free(daemon->base);
+       zfree(&daemon->config_real);
+       zfree(&daemon->config_base);
+       zfree(&daemon->base);
 }
 
 static int daemon__reconfig(struct daemon *daemon)