[libvirt] [PATCH 3 of 4] [LXC] Add XML parsing of container network interfaces

Daniel Veillard veillard at redhat.com
Thu Jun 26 12:52:24 UTC 2008


On Tue, Jun 24, 2008 at 08:51:35AM -0700, Dan Smith wrote:
> Changes:
>  - Throw an error after parsing if nets were specified and NETNS support
>    is not present
  Fine by me

[...]
> +error_out:
> +    xmlFree(macaddr);
> +    macaddr = NULL;
> +    xmlFree(network);
> +    network = NULL;
> +    xmlFree(bridge);
> +    bridge = NULL;
> +    xmlFree(parentIfName);
> +    parentIfName = NULL;
> +
> +    return rc;
> +}

  in that case the = NULL; are superfluous as they are local variables,
but i assume the compiler optimizes this easilly :-)

> +    res = virXPathNodeSet("/domain/devices/interface", contextPtr, &list);
> +    if (res > 0) {
> +        for (i = 0; i < res; ++i) {
> +            netDef = calloc(1, sizeof(lxc_net_def_t));
> +            if (NULL == netDef) {
> +                lxcError(conn, NULL, VIR_ERR_NO_MEMORY,
> +                         _("No storage for net def structure"));

  -> list need to be freed here or you leak

> +                goto parse_complete;
> +            }
> +
> +            rc = lxcParseInterfaceXML(conn, list[i], netDef);
> +            if (0 > rc) {
> +                DEBUG("failed parsing a net: %d", rc);
> +
> +                free(netDef);

  -> same here list need to be freed here or you leak

> +                goto parse_complete;
> +            }
> +
> +            DEBUG0("parsed a net");
> +
> +            /* set the linked list pointers */
> +            numNets++;
> +            netDef->next = NULL;
> +            if (0 == i) {
> +                *nets = netDef;
> +            } else {
> +                prevDef->next = netDef;
> +            }
> +            prevDef = netDef;
> +        }
> +        free(list);
> +    }
> +
> +    rc = numNets;
> +
> +parse_complete:
> +    DEBUG("parsed %d nets", rc);
> +    return rc;
>  }

  Looks fine +1 once the two leaks are plugged :-)

Daniel

-- 
Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard      | virtualization library  http://libvirt.org/
veillard at redhat.com  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine  http://rpmfind.net/




More information about the libvir-list mailing list