[libvirt] [PATCH 1/4] Make avahi startup more robust.

Daniel Veillard veillard at redhat.com
Wed Apr 21 20:17:29 UTC 2010


On Wed, Apr 21, 2010 at 02:50:18PM -0400, Chris Lalancette wrote:
> On 04/21/2010 12:25 PM, Eric Blake wrote:
> > On 04/21/2010 10:03 AM, Chris Lalancette wrote:
> >> If the hostname of the current virtualization machine
> >> could not be resolved, then libvirtd would fail to
> >> start.  However, for disconnected operation (on a laptop,
> >> for instance) the hostname may very legitimately not
> >> be resolvable.  This patch makes it so that if we can't
> >> resolve the hostname, avahi doesn't fail, it just uses
> >> a less useful MDNS string.
> > 
> > ACK on the concept, but fix the corner-case memory leak before pushing.
> > 
> >>
> >>          if (!mdns_name) {
> >> -            char groupname[64], *localhost, *tmp;
> >> +            char *groupname, *localhost, *tmp;
> >>              /* Extract the host part of the potentially FQDN */
> >>              localhost = virGetHostname(NULL);
> > 
> > Here, localhost can be allocated...
> > 
> >>              if (localhost == NULL)
> >> +                ret = virAsprintf(&groupname, "Virtualization Host");
> >> +            else {
> >> +                if ((tmp = strchr(localhost, '.')))
> >> +                    *tmp = '\0';
> >> +                ret = virAsprintf(&groupname, "Virtualization Host %s",
> >> +                                  localhost);
> > 
> > then groupname fails...
> > 
> >> +            }
> >> +            if (ret < 0) {
> >> +                virReportOOMError();
> >>                  goto cleanup;
> > 
> > ...and we leak localhost.
> > 
> >> -
> >> -            if ((tmp = strchr(localhost, '.')))
> >> -                *tmp = '\0';
> >> -            snprintf(groupname, sizeof(groupname)-1, "Virtualization Host %s", localhost);
> >> -            groupname[sizeof(groupname)-1] = '\0';
> >> +            }
> >>              group = libvirtd_mdns_add_group(server->mdns, groupname);
> >>              VIR_FREE(localhost);
> >> +            VIR_FREE(groupname);
> > 
> > But on success, there is no leak.
> > 
> 
> Oops, good call.  I'll respin the patch with that change.

  Okay, but this is an important patch, I tested this too, without it if
one cannot resolve the hostname at boot time, libvirtd service fails to
start, while it properly starts with that patch applied. I tested it
myself on one of my boxes where I had the trouble.

  So ACK once the leak is fixed !

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list