mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-24 14:45:24 +00:00
Use virGetHostname instead of gethostname.
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@redhat.com>
This commit is contained in:
parent
f24d4671d4
commit
180ca598c4
@ -6281,11 +6281,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;
|
||||
|
||||
@ -6311,14 +6312,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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user