Re: [PATCH libvirt-glib 1/5] Add suport for setting <filesystem> elements

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Nov 30, 2011 at 06:26:18PM +0100, Christophe Fergeau wrote:
> > +
> > +    if (!(old_node = gvir_config_xml_get_element(parent_node, child_name, NULL)))
> > +        return;
> > +
> > +    /* FIXME: should we make sure there are no multiple occurrences
> > +     * of this node?
> > +     */
> > +    xmlUnlinkNode(old_node);
> > +    xmlFreeNode(old_node);
> > +}
> 
> 
> I think we will get memory corruption if this API is combined with
> _attach_child:

And I'm wrong since the whole point of the introduction of GVirConfigXmlDoc
is to avoid this kind of memory corruption. However, in the example below,
fs_node will have a reference to a GVirConfigXmlDoc which has no relation
with its GVirConfigObject::node pointer, and this pointer will be pointing
to already freed memory which is suboptimal.

> 
> device_node = gvir_config_object_new("device");
> fs_node = gvir_config_object_new("fs");
> gvir_config_object_attach(device_node, fs_node);
> gvir_config_object_delete_child(device_node, "fs");
> g_object_unref(G_OBJECT(fs_node));
> 
> The xmlNodePtr held by fs_node will be freed twice, once by _delete_child
> and when _finalize runs after the call to g_object_unref
> 
> Having each GVirConfigObject keep a list of its GVirConfigObject children
> would make it possible to handle this case I think.
> 
> I'm fine with getting this function in even if there are known issues with
> it.

Christophe

Attachment: pgpr4WLkRW4lw.pgp
Description: PGP signature

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]