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. -- Chris Lalancette -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list