On Mon, May 11, 2009 at 02:19:06PM +0200, Pritesh Kothari wrote: > > You really don't need to keep any data about the networking driver > > in libvirt(d) itself ? > > > +static int vboxListNetworks(virConnectPtr conn, char **const names, int nnames) { > + vboxGlobalData *data = conn->privateData; > + int numActive = 0; > + > + if (data->vboxObj) { > + IHost *host = NULL; > + > + data->vboxObj->vtbl->GetHost(data->vboxObj, &host); > + if (host) { > + int i = 0; > + PRUint32 networkInterfacesSize = 0; > + IHostNetworkInterface **networkInterfaces = NULL; > + > + host->vtbl->GetNetworkInterfaces(host, &networkInterfacesSize, &networkInterfaces); > + > + for (i = 0; (numActive < nnames) && (i < networkInterfacesSize); i++) { > + if (networkInterfaces[i]) { > + PRUint32 interfaceType = 0; > + > + networkInterfaces[i]->vtbl->GetInterfaceType(networkInterfaces[i], &interfaceType); > + > + if (interfaceType == HostNetworkInterfaceType_HostOnly) { > + PRUint32 status = HostNetworkInterfaceStatus_Unknown; > + > + networkInterfaces[i]->vtbl->GetStatus(networkInterfaces[i], &status); > + > + if (status == HostNetworkInterfaceStatus_Up) { > + char *nameUtf8 = NULL; > + PRUnichar *nameUtf16 = NULL; > + > + networkInterfaces[i]->vtbl->GetName(networkInterfaces[i], &nameUtf16); > + data->pFuncs->pfnUtf16ToUtf8(nameUtf16, &nameUtf8); > + > + DEBUG("nnames[%d]: %s", numActive, nameUtf8); > + names[numActive++] = strdup(nameUtf8); > + > + data->pFuncs->pfnUtf8Free(nameUtf8); > + data->pFuncs->pfnUtf16Free(nameUtf16); > + } > + } > + } > + } > + > + for (i = 0; i < networkInterfacesSize; i++) { > + if (networkInterfaces[i]) { > + networkInterfaces[i]->vtbl->nsisupports.Release((nsISupports *) networkInterfaces[i]); > + } > + } > + > + host->vtbl->nsisupports.Release((nsISupports *) host); > + } > + } > + > + return numActive; > +} There's a strdup() call here that's not checked for failure, and quite a few more in other functions in the patch. This reminds me that we really need to make a wrapper for strdup, as we did for malloc() to validate failure checking at compile time. Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :| -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list