From nobody Mon Apr 29 15:24:23 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1592850070; cv=none; d=zohomail.com; s=zohoarc; b=a1Go+IX5gtfUfite+iuawzVeNK8+UtogMBsZpzGrHhbsmC1EnYj8PHtvxX5eqBqcPdWWsKtwRCfANMv4VP43zIJ1K6DmZF722XVvY1dTCHR2kOH+o2Mthh5xEmsab2FytwqwgAMVOpvFcob0sd9y25BkP33FA/YE/cbCA+n4ZAw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1592850070; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=GAf7eDSh7BKOIu8HjEmHGkayHYgxEZUn4wuOKM1ut9U=; b=kAAUwRGv9GFEAPckRBlupH7TzkXhiZU2ge+8cKAU8j0nbQPQ1imzU19Iyccc6AZU/uxwcViwwwbH4VwKGfzr/M3a9I0D2PdlAYYuWh0V1wV2HK2mf+jBewyYIymXXVdMpQDeJc8Sxjx97kT2ayNOr37aDiO1IR+Z31pba50nuaw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1592850070113727.0782209198212; Mon, 22 Jun 2020 11:21:10 -0700 (PDT) Received: from localhost ([::1]:39502 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jnR48-00013U-Nd for importer@patchew.org; Mon, 22 Jun 2020 14:21:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40386) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jnR2t-00006g-JM for qemu-devel@nongnu.org; Mon, 22 Jun 2020 14:19:51 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:28910 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jnR2s-0005vJ-17 for qemu-devel@nongnu.org; Mon, 22 Jun 2020 14:19:51 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-428-0GHrxigYPAykF_g52EJvZg-1; Mon, 22 Jun 2020 14:19:47 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1CB1B1883604; Mon, 22 Jun 2020 18:19:46 +0000 (UTC) Received: from localhost.localdomain (unknown [10.40.194.228]) by smtp.corp.redhat.com (Postfix) with ESMTP id B274F18B05; Mon, 22 Jun 2020 18:19:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1592849989; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GAf7eDSh7BKOIu8HjEmHGkayHYgxEZUn4wuOKM1ut9U=; b=IQB3uN3aows/Qj4kNVzpTj0u6VPCobTlSufH/uS5CvGPu73gIMo/xtXc9VRNeF772CtCjC BEWGAbJLCcXmk9ovD5EnDFbbYeT0fHcGV3XO5xeN+mODr5AkPFJeiZ8va3Wty6T+7aVDjO mx5CJ7a3mCGsqi9mjyYm+0d9R2VIXWI= X-MC-Unique: 0GHrxigYPAykF_g52EJvZg-1 From: Michal Privoznik To: qemu-devel@nongnu.org Subject: [PATCH v3 1/2] util: Introduce qemu_get_host_name() Date: Mon, 22 Jun 2020 20:19:35 +0200 Message-Id: <02ebd01e1ff7b4aba70e58a674f457ec8e4cf20b.1592849834.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.139.110.120; envelope-from=mprivozn@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/06/22 01:27:42 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: pbonzini@redhat.com, vfeenstr@redhat.com, marcandre.lureau@gmail.com, mdroth@linux.vnet.ibm.com, sw@weilnetz.de Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This function offers operating system agnostic way to fetch host name. It is implemented for both POSIX-like and Windows systems. Signed-off-by: Michal Privoznik Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/qemu/osdep.h | 10 ++++++++++ util/oslib-posix.c | 35 +++++++++++++++++++++++++++++++++++ util/oslib-win32.c | 13 +++++++++++++ 3 files changed, 58 insertions(+) diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index ff7c17b857..a795d46b28 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -607,4 +607,14 @@ static inline void qemu_reset_optind(void) #endif } =20 +/** + * qemu_get_host_name: + * @errp: Error object + * + * Operating system agnostic way of querying host name. + * + * Returns allocated hostname (caller should free), NULL on failure. + */ +char *qemu_get_host_name(Error **errp); + #endif diff --git a/util/oslib-posix.c b/util/oslib-posix.c index 916f1be224..3997ee0442 100644 --- a/util/oslib-posix.c +++ b/util/oslib-posix.c @@ -761,3 +761,38 @@ void sigaction_invoke(struct sigaction *action, } action->sa_sigaction(info->ssi_signo, &si, NULL); } + +#ifndef HOST_NAME_MAX +# ifdef _POSIX_HOST_NAME_MAX +# define HOST_NAME_MAX _POSIX_HOST_NAME_MAX +# else +# define HOST_NAME_MAX 255 +# endif +#endif + +char *qemu_get_host_name(Error **errp) +{ + long len =3D -1; + g_autofree char *hostname =3D NULL; + +#ifdef _SC_HOST_NAME_MAX + len =3D sysconf(_SC_HOST_NAME_MAX); +#endif /* _SC_HOST_NAME_MAX */ + + if (len < 0) { + len =3D HOST_NAME_MAX; + } + + /* Unfortunately, gethostname() below does not guarantee a + * NULL terminated string. Therefore, allocate one byte more + * to be sure. */ + hostname =3D g_new0(char, len + 1); + + if (gethostname(hostname, len) < 0) { + error_setg_errno(errp, errno, + "cannot get hostname"); + return NULL; + } + + return g_steal_pointer(&hostname); +} diff --git a/util/oslib-win32.c b/util/oslib-win32.c index e9b14ab178..3b49d27297 100644 --- a/util/oslib-win32.c +++ b/util/oslib-win32.c @@ -808,3 +808,16 @@ bool qemu_write_pidfile(const char *filename, Error **= errp) } return true; } + +char *qemu_get_host_name(Error **errp) +{ + wchar_t tmp[MAX_COMPUTERNAME_LENGTH + 1]; + DWORD size =3D G_N_ELEMENTS(tmp); + + if (GetComputerNameW(tmp, &size) =3D=3D 0) { + error_setg_win32(errp, GetLastError(), "failed close handle"); + return NULL; + } + + return g_utf16_to_utf8(tmp, size, NULL, NULL, NULL); +} --=20 2.26.2 From nobody Mon Apr 29 15:24:23 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1592850073; cv=none; d=zohomail.com; s=zohoarc; b=KwOcsZJ0b6u2itAHaO6fZ+R/LNHf1Iy4hGpOiQyzMUMeeIovyhvuQac20RbYzEWB0aQOBCTE+PVZ100ptB1ecMa9zZ8+dy6uYdSqf7puxc/nVAtUk6p/mRI7qej0tS3hpmkRN0QEeG8Mpi7IktxqwdjZySHfXn3bneLuTHetQBg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1592850073; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=omB/C5xhlgaHTAk2xiwoKR+JnhPBVcdye6A/qfnjfTY=; b=aHEASW2NQiXPcAomQJpr22iyPPEg4Giz9MNXR0xNUmWvvHzequqVnxW66IknAa0KEDnfcYAg6LW5xVMqpxL6tEdaDCPEqRnWI+cmQ7q6crISVQSkhMGe/5L1sGiId6HNgkuwbIjZSO98Fos57vCRfUvIJ1x0SoTHvs9f4SFZ1cY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1592850073870188.06534419630066; Mon, 22 Jun 2020 11:21:13 -0700 (PDT) Received: from localhost ([::1]:39634 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jnR4C-00016c-Av for importer@patchew.org; Mon, 22 Jun 2020 14:21:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40398) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jnR2u-00006r-NO for qemu-devel@nongnu.org; Mon, 22 Jun 2020 14:19:52 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:26796 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jnR2t-0005vQ-3c for qemu-devel@nongnu.org; Mon, 22 Jun 2020 14:19:52 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-172-rqnMv9NaPTWIJLOEMi0LjA-1; Mon, 22 Jun 2020 14:19:48 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C86A7100A907; Mon, 22 Jun 2020 18:19:47 +0000 (UTC) Received: from localhost.localdomain (unknown [10.40.194.228]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6AE4D610F2; Mon, 22 Jun 2020 18:19:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1592849990; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=omB/C5xhlgaHTAk2xiwoKR+JnhPBVcdye6A/qfnjfTY=; b=Idkss52k1LDr0qJZNTLFS1WPwViOVRnbsCDiZNKGlzDejJYplG57qWvaUC05ewq+mlUupJ VwsDjfU7UaGA0qYyeb+IiM4X3oDKimo2iRKyi/BcU+lUIrsuW2iKsfeXVH1sM76s6jNJB0 0X/qM7JlxZckovaBGzsEEiif2WENHo4= X-MC-Unique: rqnMv9NaPTWIJLOEMi0LjA-1 From: Michal Privoznik To: qemu-devel@nongnu.org Subject: [PATCH v3 2/2] qga: Use qemu_get_host_name() instead of g_get_host_name() Date: Mon, 22 Jun 2020 20:19:36 +0200 Message-Id: <873fc5052847ee5df75a75e30960d6d4ab44473b.1592849834.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.139.110.120; envelope-from=mprivozn@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/06/22 01:27:42 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: pbonzini@redhat.com, vfeenstr@redhat.com, marcandre.lureau@gmail.com, mdroth@linux.vnet.ibm.com, sw@weilnetz.de Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Problem with g_get_host_name() is that on the first call it saves the hostname into a global variable and from then on, every subsequent call returns the saved hostname. Even if the hostname changes. This doesn't play nicely with guest agent, because if the hostname is acquired before the guest is set up (e.g. on the first boot, or before DHCP) we will report old, invalid hostname. Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=3D1845127 Signed-off-by: Michal Privoznik Reviewed-by: Daniel P. Berrang=C3=A9 --- qga/commands.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/qga/commands.c b/qga/commands.c index efc8b90281..d3fec807c1 100644 --- a/qga/commands.c +++ b/qga/commands.c @@ -515,11 +515,20 @@ int ga_parse_whence(GuestFileWhence *whence, Error **= errp) GuestHostName *qmp_guest_get_host_name(Error **errp) { GuestHostName *result =3D NULL; - gchar const *hostname =3D g_get_host_name(); - if (hostname !=3D NULL) { - result =3D g_new0(GuestHostName, 1); - result->host_name =3D g_strdup(hostname); + g_autofree char *hostname =3D qemu_get_host_name(errp); + + /* + * We want to avoid using g_get_host_name() because that + * caches the result and we wouldn't reflect changes in the + * host name. + */ + + if (!hostname) { + hostname =3D g_strdup("localhost"); } + + result =3D g_new0(GuestHostName, 1); + result->host_name =3D g_steal_pointer(&hostname); return result; } =20 --=20 2.26.2