From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57646) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bi0AC-0001j7-Jm for qemu-devel@nongnu.org; Thu, 08 Sep 2016 10:18:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bi0AA-0000vX-BF for qemu-devel@nongnu.org; Thu, 08 Sep 2016 10:18:47 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50956) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bi0AA-0000vE-3L for qemu-devel@nongnu.org; Thu, 08 Sep 2016 10:18:46 -0400 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Thu, 8 Sep 2016 18:17:18 +0400 Message-Id: <20160908141720.30641-24-marcandre.lureau@redhat.com> In-Reply-To: <20160908141720.30641-1-marcandre.lureau@redhat.com> References: <20160908141720.30641-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PULLv2 23/25] tests: pc-cpu-test leaks fixes List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, eblake@redhat.com, armbru@redhat.com, pbonzini@redhat.com, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= The path is allocated and should be freed. The qmp response should be unref, but then 'machine' must be duplicated. Use a destroy function for the PCTestData. Signed-off-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Eric Blake --- tests/pc-cpu-test.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/tests/pc-cpu-test.c b/tests/pc-cpu-test.c index 4428cea..c3a2633 100644 --- a/tests/pc-cpu-test.c +++ b/tests/pc-cpu-test.c @@ -14,7 +14,7 @@ #include "qapi/qmp/types.h" =20 struct PCTestData { - const char *machine; + char *machine; const char *cpu_model; unsigned sockets; unsigned cores; @@ -71,6 +71,14 @@ static void test_pc_without_cpu_add(gconstpointer data= ) g_free(args); } =20 +static void test_data_free(gpointer data) +{ + PCTestData *pc =3D data; + + g_free(pc->machine); + g_free(pc); +} + static void add_pc_test_cases(void) { QDict *response, *minfo; @@ -78,7 +86,8 @@ static void add_pc_test_cases(void) const QListEntry *p; QObject *qobj; QString *qstr; - const char *mname, *path; + const char *mname; + char *path; PCTestData *data; =20 qtest_start("-machine none"); @@ -99,7 +108,7 @@ static void add_pc_test_cases(void) continue; } data =3D g_malloc(sizeof(PCTestData)); - data->machine =3D mname; + data->machine =3D g_strdup(mname); data->cpu_model =3D "Haswell"; /* 1.3+ theoretically */ data->sockets =3D 1; data->cores =3D 3; @@ -119,14 +128,19 @@ static void add_pc_test_cases(void) path =3D g_strdup_printf("cpu/%s/init/%ux%ux%u&maxcpus=3D%u"= , mname, data->sockets, data->cores, data->threads, data->maxcpus); - qtest_add_data_func(path, data, test_pc_without_cpu_add); + qtest_add_data_func_full(path, data, test_pc_without_cpu_add= , + test_data_free); + g_free(path); } else { path =3D g_strdup_printf("cpu/%s/add/%ux%ux%u&maxcpus=3D%u", mname, data->sockets, data->cores, data->threads, data->maxcpus); - qtest_add_data_func(path, data, test_pc_with_cpu_add); + qtest_add_data_func_full(path, data, test_pc_with_cpu_add, + test_data_free); + g_free(path); } } + QDECREF(response); qtest_end(); } =20 --=20 2.10.0