Skip to content

Commit ab2d185

Browse files
Markus Armbrusterhuth
authored andcommitted
qom: Plug memory leak in "info qom-tree"
Commit e8c9e65 "qom: Make "info qom-tree" show children sorted" created a memory leak, because I didn't realize object_get_canonical_path_component()'s value needs to be freed. Reproducer: $ qemu-system-x86_64 -nodefaults -display none -S -monitor stdio QEMU 5.0.50 monitor - type 'help' for more information (qemu) info qom-tree This leaks some 4500 path components, 12-13 characters on average, i.e. roughly 100kBytes depending on the allocator. A couple of hundred "info qom-tree" here, a couple of hundred there, and soon enough we're talking about real memory. Plug the leak. Fixes: e8c9e65 Signed-off-by: Markus Armbruster <[email protected]> Reported-by: Reviewed-by: Li Qiang <[email protected]> [sent same patch] Message-Id: <[email protected]> Reviewed-by: Philippe Mathieu-Daudé <[email protected]> Signed-off-by: Thomas Huth <[email protected]>
1 parent 12a9b8d commit ab2d185

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

qom/qom-hmp-cmds.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,10 @@ static void print_qom_composition(Monitor *mon, Object *obj, int indent);
9696

9797
static int qom_composition_compare(const void *a, const void *b, void *ignore)
9898
{
99-
return g_strcmp0(a ? object_get_canonical_path_component(a) : NULL,
100-
b ? object_get_canonical_path_component(b) : NULL);
99+
g_autofree char *ac = object_get_canonical_path_component(a);
100+
g_autofree char *bc = object_get_canonical_path_component(b);
101+
102+
return g_strcmp0(ac, bc);
101103
}
102104

103105
static int insert_qom_composition_child(Object *obj, void *opaque)

0 commit comments

Comments
 (0)