Message ID | 20240820144912.320744-8-peter.maydell@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | tests/qtest/migration-test: Fix various leaks | expand |
Peter Maydell <peter.maydell@linaro.org> writes: > In migrate_set_ports() we call qdict_put_str() with a value string > which we g_strdup(). However qdict_put_str() takes a copy of the > value string, it doesn't take ownership of it, so the g_strdup() > only results in a leak: > > Direct leak of 6 byte(s) in 1 object(s) allocated from: > #0 0x56298023713e in malloc (/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/asan/tests/qtest/migration-test+0x22f13e) (BuildId: b2b9174a5a54707a7f76bca51cdc95d2aa08bac1) > #1 0x7fba0ad39738 in g_malloc debian/build/deb/../../../glib/gmem.c:128:13 > #2 0x7fba0ad4e583 in g_strdup debian/build/deb/../../../glib/gstrfuncs.c:361:17 > #3 0x56298036b16e in migrate_set_ports tests/qtest/migration-helpers.c:145:49 > #4 0x56298036ad1c in migrate_qmp tests/qtest/migration-helpers.c:228:9 > #5 0x56298035b3dd in test_precopy_common tests/qtest/migration-test.c:1820:5 > #6 0x5629803549dc in test_multifd_tcp_channels_none tests/qtest/migration-test.c:3077:5 > #7 0x56298036d427 in migration_test_wrapper tests/qtest/migration-helpers.c:456:5 > > Drop the unnecessary g_strdup() call. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > tests/qtest/migration-helpers.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tests/qtest/migration-helpers.c b/tests/qtest/migration-helpers.c > index 7cbb9831e76..a43d180c807 100644 > --- a/tests/qtest/migration-helpers.c > +++ b/tests/qtest/migration-helpers.c > @@ -142,7 +142,7 @@ static void migrate_set_ports(QTestState *to, QList *channel_list) > qdict_haskey(addr, "port") && > (strcmp(qdict_get_str(addrdict, "port"), "0") == 0)) { > addr_port = qdict_get_str(addr, "port"); > - qdict_put_str(addrdict, "port", g_strdup(addr_port)); > + qdict_put_str(addrdict, "port", addr_port); > } > } Reviewed-by: Fabiano Rosas <farosas@suse.de>
diff --git a/tests/qtest/migration-helpers.c b/tests/qtest/migration-helpers.c index 7cbb9831e76..a43d180c807 100644 --- a/tests/qtest/migration-helpers.c +++ b/tests/qtest/migration-helpers.c @@ -142,7 +142,7 @@ static void migrate_set_ports(QTestState *to, QList *channel_list) qdict_haskey(addr, "port") && (strcmp(qdict_get_str(addrdict, "port"), "0") == 0)) { addr_port = qdict_get_str(addr, "port"); - qdict_put_str(addrdict, "port", g_strdup(addr_port)); + qdict_put_str(addrdict, "port", addr_port); } }
In migrate_set_ports() we call qdict_put_str() with a value string which we g_strdup(). However qdict_put_str() takes a copy of the value string, it doesn't take ownership of it, so the g_strdup() only results in a leak: Direct leak of 6 byte(s) in 1 object(s) allocated from: #0 0x56298023713e in malloc (/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/asan/tests/qtest/migration-test+0x22f13e) (BuildId: b2b9174a5a54707a7f76bca51cdc95d2aa08bac1) #1 0x7fba0ad39738 in g_malloc debian/build/deb/../../../glib/gmem.c:128:13 #2 0x7fba0ad4e583 in g_strdup debian/build/deb/../../../glib/gstrfuncs.c:361:17 #3 0x56298036b16e in migrate_set_ports tests/qtest/migration-helpers.c:145:49 #4 0x56298036ad1c in migrate_qmp tests/qtest/migration-helpers.c:228:9 #5 0x56298035b3dd in test_precopy_common tests/qtest/migration-test.c:1820:5 #6 0x5629803549dc in test_multifd_tcp_channels_none tests/qtest/migration-test.c:3077:5 #7 0x56298036d427 in migration_test_wrapper tests/qtest/migration-helpers.c:456:5 Drop the unnecessary g_strdup() call. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- tests/qtest/migration-helpers.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)