[libvirt] [PATCH] Use virGetHostname instead of gethostname.
Daniel P. Berrange
berrange at redhat.com
Fri Jul 31 14:57:27 UTC 2009
On Fri, Jul 31, 2009 at 03:19:53PM +0200, Chris Lalancette wrote:
> Fix up qemudDomainMigratePrepare2 to use virGetHostname instead of
> gethostname. Besides the fact that virGetHostname is far more clever,
> there was a latent bug in the handling that could cause a buffer overflow
> on a very long hostname.
>
> Signed-off-by: Chris Lalancette <clalance at redhat.com>
> ---
> src/qemu_driver.c | 9 ++++++---
> 1 files changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/src/qemu_driver.c b/src/qemu_driver.c
> index cee2164..83cbcf3 100644
> --- a/src/qemu_driver.c
> +++ b/src/qemu_driver.c
> @@ -6270,11 +6270,12 @@ qemudDomainMigratePrepare2 (virConnectPtr dconn,
> virDomainDefPtr def = NULL;
> virDomainObjPtr vm = NULL;
> int this_port;
> - char hostname [HOST_NAME_MAX+1];
> + char *hostname;
> char migrateFrom [64];
> const char *p;
> virDomainEventPtr event = NULL;
> int ret = -1;;
> + int internalret;
>
> *uri_out = NULL;
>
> @@ -6300,14 +6301,16 @@ qemudDomainMigratePrepare2 (virConnectPtr dconn,
> if (port == QEMUD_MIGRATION_NUM_PORTS) port = 0;
>
> /* Get hostname */
> - if (gethostname (hostname, HOST_NAME_MAX+1) == -1) {
> + if ((hostname = virGetHostname()) == NULL) {
> virReportSystemError (dconn, errno,
> "%s", _("failed to determine host name"));
> goto cleanup;
> }
>
> /* Caller frees */
> - if (virAsprintf(uri_out, "tcp:%s:%d", hostname, this_port) < 0) {
> + internalret = virAsprintf(uri_out, "tcp:%s:%d", hostname, this_port);
> + VIR_FREE(hostname);
> + if (internalret < 0) {
> virReportOOMError (dconn);
> goto cleanup;
> }
ACK
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 :|
More information about the libvir-list
mailing list