mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-24 06:35:24 +00:00
conf: avoid memory leak on virDomainDefParseXML
* conf/domain_conf.c: allocate memory to def->redirdevs in virDomainDefParseXML such as VIR_ALLOC_N(def->redirdevs, n), however, virDomainDefFree(def) hasn't released these memory. * Detected in valgrind run: ==19820== 209 (16 direct, 193 indirect) bytes in 1 blocks are definitely lost in loss record 25 of 26 ==19820== at 0x4A04A28: calloc (vg_replace_malloc.c:467) ==19820== by 0x4A13AF: virAllocN (memory.c:129) ==19820== by 0x4D4A0E: virDomainDefParseXML (domain_conf.c:7258) ==19820== by 0x4D4C93: virDomainDefParseNode (domain_conf.c:7512) ==19820== by 0x4D562F: virDomainDefParse (domain_conf.c:7465) ==19820== by 0x415863: testCompareXMLToXMLFiles (qemuxml2xmltest.c:35) ==19820== by 0x415982: testCompareXMLToXMLHelper (qemuxml2xmltest.c:80) ==19820== by 0x416D31: virtTestRun (testutils.c:140) ==19820== by 0x415604: mymain (qemuxml2xmltest.c:192) ==19820== by 0x416437: virtTestMain (testutils.c:689) ==19820== by 0x3CA7A1ECDC: (below main) (in /lib64/libc-2.12.so) ==19820== ==19820== LEAK SUMMARY: ==19820== definitely lost: 16 bytes in 1 blocks ==19820== indirectly lost: 193 bytes in 5 blocks ==19820== possibly lost: 0 bytes in 0 blocks ==19820== still reachable: 1,054 bytes in 21 blocks * How to reproduce? % valgrind -v --leak-check=full ./tests/qemuxml2xmltest Signed-off-by: Alex Jia <ajia@redhat.com>
This commit is contained in:
parent
bc35f12a45
commit
b996110285
@ -1206,6 +1206,10 @@ void virDomainDefFree(virDomainDefPtr def)
|
||||
virDomainHubDefFree(def->hubs[i]);
|
||||
VIR_FREE(def->hubs);
|
||||
|
||||
for (i = 0 ; i < def->nredirdevs ; i++)
|
||||
virDomainRedirdevDefFree(def->redirdevs[i]);
|
||||
VIR_FREE(def->redirdevs);
|
||||
|
||||
VIR_FREE(def->os.type);
|
||||
VIR_FREE(def->os.arch);
|
||||
VIR_FREE(def->os.machine);
|
||||
|
Loading…
Reference in New Issue
Block a user