[libvirt] [libvirt-designer 1/2] Fix gvir_designer_domain_get_fallback_disk_controller leak

When the list of devices is empty (osinfo_list_get_length(devices) == 0), the 'devices' object would be leaked. --- libvirt-designer/libvirt-designer-domain.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libvirt-designer/libvirt-designer-domain.c b/libvirt-designer/libvirt-designer-domain.c index c1a0e83..6629fb5 100644 --- a/libvirt-designer/libvirt-designer-domain.c +++ b/libvirt-designer/libvirt-designer-domain.c @@ -1517,7 +1517,7 @@ gvir_designer_domain_get_fallback_disk_controller(GVirDesignerDomain *design, GError **error) { OsinfoEntity *dev = NULL; - OsinfoDeviceList *devices; + OsinfoDeviceList *devices = NULL; OsinfoFilter *filter; int virt_type; @@ -1552,9 +1552,11 @@ gvir_designer_domain_get_fallback_disk_controller(GVirDesignerDomain *design, dev = osinfo_list_get_nth(OSINFO_LIST(devices), 0); g_object_ref(G_OBJECT(dev)); - g_object_unref(G_OBJECT(devices)); cleanup: + if (devices != NULL) + g_object_unref(G_OBJECT(devices)); + return OSINFO_DEVICE(dev); } -- 2.1.0

One GVirConfigCapabilitiesGuestArch instance was created for each loop iteration, but it was never unref'ed, causing a memory leak. --- libvirt-designer/libvirt-designer-domain.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libvirt-designer/libvirt-designer-domain.c b/libvirt-designer/libvirt-designer-domain.c index 6629fb5..cefefea 100644 --- a/libvirt-designer/libvirt-designer-domain.c +++ b/libvirt-designer/libvirt-designer-domain.c @@ -999,10 +999,12 @@ gvir_designer_domain_get_guest_full(GVirDesignerDomain *design, if (g_str_equal(guestarch, wantarch) && guestos == ostype) { + g_object_unref(G_OBJECT(arch)); ret = g_object_ref(guest); goto cleanup; } + g_object_unref(G_OBJECT(arch)); tmp = tmp->next; } -- 2.1.0

On 04.03.2015 13:26, Christophe Fergeau wrote:
When the list of devices is empty (osinfo_list_get_length(devices) == 0), the 'devices' object would be leaked. --- libvirt-designer/libvirt-designer-domain.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
ACK to both. Michal

On Wed, Mar 04, 2015 at 01:50:51PM +0100, Michal Privoznik wrote:
On 04.03.2015 13:26, Christophe Fergeau wrote:
When the list of devices is empty (osinfo_list_get_length(devices) == 0), the 'devices' object would be leaked. --- libvirt-designer/libvirt-designer-domain.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
ACK to both.
Pushed. Christophe
participants (2)
-
Christophe Fergeau
-
Michal Privoznik