From c2c4fabfc609276558165d9388c23e4ff58ec584 Mon Sep 17 00:00:00 2001 From: Victor Toso Date: Tue, 15 Feb 2022 10:40:22 +0100 Subject: loader: Fix leak of xmlNodePtr * The pointer is used as output parameter of osinfo_loader_nodeset() which sets it to NULL before using it. The caller should free its contents before reusing it. ==382836== 104 bytes in 8 blocks are definitely lost in loss record 2,097 of 2,333 ==382836== at 0x4849464: calloc (vg_replace_malloc.c:1328) ==382836== by 0x496E510: g_malloc0 (in /usr/lib64/libglib-2.0.so.0.7000.3) ==382836== by 0x4888DD7: osinfo_loader_nodeset (osinfo_loader.c:237) ==382836== by 0x488A98E: osinfo_loader_os (osinfo_loader.c:1661) ==382836== by 0x488A98E: osinfo_loader_root (osinfo_loader.c:1884) ==382836== by 0x488A98E: osinfo_loader_process_xml (osinfo_loader.c:1973) ==382836== by 0x488A98E: osinfo_loader_process_file_reg_xml (osinfo_loader.c:2182) ==382836== by 0x488D07A: osinfo_loader_process_list (osinfo_loader.c:2515) ==382836== by 0x488D27F: osinfo_loader_process_path (osinfo_loader.c:2587) ==382836== by 0x402A61: test_loaded (test-image.c:59) ==382836== by 0x4992BD5: ??? (in /usr/lib64/libglib-2.0.so.0.7000.3) ==382836== by 0x49928FA: ??? (in /usr/lib64/libglib-2.0.so.0.7000.3) ==382836== by 0x49930A9: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.7000.3) ==382836== by 0x49930D0: g_test_run (in /usr/lib64/libglib-2.0.so.0.7000.3) ==382836== by 0x402386: main (test-image.c:114) Signed-off-by: Victor Toso --- osinfo/osinfo_loader.c | 1 + 1 file changed, 1 insertion(+) diff --git a/osinfo/osinfo_loader.c b/osinfo/osinfo_loader.c index e244b3f..fa68334 100644 --- a/osinfo/osinfo_loader.c +++ b/osinfo/osinfo_loader.c @@ -1679,6 +1679,7 @@ static void osinfo_loader_os(OsinfoLoader *loader, g_object_unref(firmware); } + g_clear_pointer(&nodes, g_free); nnodes = osinfo_loader_nodeset("./media", loader, ctxt, &nodes, err); if (error_is_set(err)) goto cleanup; -- cgit v1.2.1