Peter Maydell <peter.mayd...@linaro.org> writes: > In the migration test we create several TLS certificates with > the TLS_* macros from crypto-tls-x509-helpers.h. These macros > create both a QCryptoTLSCertReq object which must be deinitialized > and also an on-disk certificate file. The migration test currently > removes the on-disk file in test_migrate_tls_x509_finish() but > never deinitializes the QCryptoTLSCertReq, which means that memory > allocated as part of it is leaked: > > Indirect leak of 2 byte(s) in 1 object(s) allocated from: > #0 0x5558ba33712e in malloc > (/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/asan/tests/qtest/migration-test+0x22f12e) > (BuildId: 4c8618f663e538538cad19d35233124cea161491) > #1 0x7f64afc131f4 (/lib/x86_64-linux-gnu/libtasn1.so.6+0x81f4) (BuildId: > 2fde6ecb43c586fe4077118f771077aa1298e7ea) > #2 0x7f64afc18d58 in asn1_write_value > (/lib/x86_64-linux-gnu/libtasn1.so.6+0xdd58) (BuildId: > 2fde6ecb43c586fe4077118f771077aa1298e7ea) > #3 0x7f64af8fc678 in gnutls_x509_crt_set_version > (/lib/x86_64-linux-gnu/libgnutls.so.30+0xe7678) (BuildId: > 97b8f99f392f1fd37b969a7164bcea884e23649b) > #4 0x5558ba470035 in test_tls_generate_cert > tests/unit/crypto-tls-x509-helpers.c:234:5 > #5 0x5558ba464e4a in test_migrate_tls_x509_start_common > tests/qtest/migration-test.c:1058:5 > #6 0x5558ba462c8a in test_migrate_tls_x509_start_default_host > tests/qtest/migration-test.c:1123:12 > #7 0x5558ba45ab40 in test_precopy_common > tests/qtest/migration-test.c:1786:21 > #8 0x5558ba450015 in test_precopy_unix_tls_x509_default_host > tests/qtest/migration-test.c:2077:5 > #9 0x5558ba46d3c7 in migration_test_wrapper > tests/qtest/migration-helpers.c:456:5 > > (and similar reports). > > The only function currently provided to deinit a QCryptoTLSCertReq is > test_tls_discard_cert(), which also removes the on-disk certificate > file. For the migration tests we need to retain the on-disk files > until we've finished running the test, so the simplest fix is to > provide a new function test_tls_deinit_cert() which does only the > cleanup of the QCryptoTLSCertReq, and call it in the right places. > > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org>
Reviewed-by: Fabiano Rosas <faro...@suse.de>