ack ----- Mensaje original ----- > When exiting remote-viewer, VirtViewepApp::dispose() calls > virt_viewer_app_set_connect_info() with NULL parameters to free all > internal fields. However, _set_connect_info() calls > virt_viewer_app_update_pretty_address() which will always allocate > a new string even if the fields it's using to fill the string are NULL. > This commit fixes the leak by checking if the fields have non-NULL > values before creating the newly-allocated string. > > ==24180== 14 bytes in 1 blocks are definitely lost in loss record 540 of > 8,671 > ==24180== at 0x4A0887C: malloc (vg_replace_malloc.c:270) > ==24180== by 0x32D2B0A187: __vasprintf_chk (vasprintf_chk.c:80) > ==24180== by 0x32D52845AA: g_vasprintf (stdio2.h:210) > ==24180== by 0x32D52640DC: g_strdup_vprintf (gstrfuncs.c:517) > ==24180== by 0x32D526417B: g_strdup_printf (gstrfuncs.c:543) > ==24180== by 0x4136E6: virt_viewer_app_update_pretty_address > (virt-viewer-app.c:1681) > ==24180== by 0x414100: virt_viewer_app_set_connect_info > (virt-viewer-app.c:1902) > ==24180== by 0x4141D0: virt_viewer_app_free_connect_info > (virt-viewer-app.c:1910) > ==24180== by 0x4127C6: virt_viewer_app_dispose (virt-viewer-app.c:1353) > ==24180== by 0x425488: remote_viewer_dispose (remote-viewer.c:131) > ==24180== by 0x32D5E14787: g_object_unref (gobject.c:2986) > ==24180== by 0x4280AF: main (remote-viewer-main.c:323) > --- > src/virt-viewer-app.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c > index 3fd7613..fac87f6 100644 > --- a/src/virt-viewer-app.c > +++ b/src/virt-viewer-app.c > @@ -1673,11 +1673,12 @@ virt_viewer_app_update_pretty_address(VirtViewerApp > *self) > > priv = self->priv; > g_free(priv->pretty_address); > + priv->pretty_address = NULL; > if (priv->guri) > priv->pretty_address = g_strdup(priv->guri); > else if (priv->gport) > priv->pretty_address = g_strdup_printf("%s:%s", priv->ghost, > priv->gport); > - else > + else if (priv->host && priv->unixsock) > priv->pretty_address = g_strdup_printf("%s:%s", priv->host, > priv->unixsock); > } > > -- > 1.8.1.4 > > _______________________________________________ > virt-tools-list mailing list > virt-tools-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/virt-tools-list > _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list