From nobody Sun Apr 28 11:27:31 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=1592846881; cv=none; d=zohomail.com; s=zohoarc; b=Fd8ciIyXAO7rlMhrZ8rZBZraDUJzs3y2EeqK6Q2gc0zQrTnGQagonaB1/Iqfo2ycDgAl99W2hIXTFpESaIOlVAhSkdJNR38NfprysDPLSi0EWWkg5pf0FcEcEkFv4panYe5TZkGkNj2E2Cuma/mrQ/EcAX0v4iPJd4ML/IzX6Tk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1592846881; 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=L4mj57v5yU1nCJH7jOSXLZpM4EHPNkY6Oi4TT47QtvY=; b=FUu4bcO8OvwruCFaSXCyF/lZe/EBDpAN/pXbdlyfs8/41rn9eR+bbv9MsspEOsTppWR5MaaXcoPt0gYLAa0KNLoioyrcdYENlbh1mMr7wOc5VtdXF9MHCf9hVyUAZKQjMLZvJSs7QuY5JfBAc6+rrGqe4xBbyh1YapmtD7xXEvg= 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 1592846881743716.6989455512106; Mon, 22 Jun 2020 10:28:01 -0700 (PDT) Received: from localhost ([::1]:48448 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jnQEi-0004pO-C5 for importer@patchew.org; Mon, 22 Jun 2020 13:28:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57396) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jnQDi-0003n4-04 for qemu-devel@nongnu.org; Mon, 22 Jun 2020 13:26:58 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:27567 helo=us-smtp-delivery-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 1jnQDg-00068K-Ak for qemu-devel@nongnu.org; Mon, 22 Jun 2020 13:26:57 -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-335-nNIhR39JP7C_WucnRWpx7A-1; Mon, 22 Jun 2020 13:26:54 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C1E58835B41; Mon, 22 Jun 2020 17:26:52 +0000 (UTC) Received: from localhost.localdomain (unknown [10.40.194.228]) by smtp.corp.redhat.com (Postfix) with ESMTP id 63E585C1BD; Mon, 22 Jun 2020 17:26:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1592846815; 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=L4mj57v5yU1nCJH7jOSXLZpM4EHPNkY6Oi4TT47QtvY=; b=CZcRj59rn389wdAL8eq0IUbwv4gkH5HeEBl06Ck5ixnCEtbCCQkvVij9UaA65ku4KpN9s6 1ooW50s/MBuPPmA43xwuvW2582ratzU+0RF+nHqT4nTV/+oDMBdQabF0BD56e2UqmwW5T0 pLlqhkp1jp2lxtDFt4As/D0RrWZJz5s= X-MC-Unique: nNIhR39JP7C_WucnRWpx7A-1 From: Michal Privoznik To: qemu-devel@nongnu.org Subject: [PATCH v2 1/2] util: Introduce qemu_get_host_name() Date: Mon, 22 Jun 2020 19:26:44 +0200 Message-Id: <567f969602c1742e23c7760944e909346b2d012b.1592846572.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 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=207.211.31.81; envelope-from=mprivozn@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/06/22 02:57:26 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 --- include/qemu/osdep.h | 10 ++++++++++ util/oslib-posix.c | 32 ++++++++++++++++++++++++++++++++ util/oslib-win32.c | 13 +++++++++++++ 3 files changed, 55 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..865a3d71a7 100644 --- a/util/oslib-posix.c +++ b/util/oslib-posix.c @@ -761,3 +761,35 @@ 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; + char *hostname; + +#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; + } + + hostname =3D g_malloc0(len + 1); + + if (gethostname(hostname, len) < 0) { + error_setg_errno(errp, errno, + "cannot get hostname"); + return NULL; + } + + return 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 Sun Apr 28 11:27:31 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=1592846941; cv=none; d=zohomail.com; s=zohoarc; b=KJWNmkVy4T3Nkm01ckc+Ev5F9FOHjEYQBNDr665gJKUKFFPhSI6acFYn8tgVr48wtBQgQuevgDJgpT8y8zu0WaOEDjmbcihopz0v5steDpJqwzjUtr2pp1gJDB8mE+pJBlHeI+502rBL+uINUmYiXAIDxe3PU+jxzwEkdGXnJkk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1592846941; 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=BfGgI+IVW3rh7RCVNYAlRJwNVbXKDwwgzGlCGdb2uxGEktNGCdyOAQ+q8zvnVfmPO2CkJiallEFvUq1wGdMpDMpAOlOP+suXeeWImnjGMGyP9QZNIegGINUXAjKjeLrM7WFuKFQkOmRZ474JBYePZu/7B0VvSf/FmfbabZ76KpM= 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 159284694174174.35273527554295; Mon, 22 Jun 2020 10:29:01 -0700 (PDT) Received: from localhost ([::1]:51438 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jnQFg-00064N-IC for importer@patchew.org; Mon, 22 Jun 2020 13:29:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57420) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jnQDl-0003t1-Vs for qemu-devel@nongnu.org; Mon, 22 Jun 2020 13:27:02 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:42305 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 1jnQDk-00068g-6A for qemu-devel@nongnu.org; Mon, 22 Jun 2020 13:27:01 -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-471-ADzJjk10O5mdkf1VLSc40g-1; Mon, 22 Jun 2020 13:26:55 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 789EA107ACF3; Mon, 22 Jun 2020 17:26:54 +0000 (UTC) Received: from localhost.localdomain (unknown [10.40.194.228]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1C23E5C1BD; Mon, 22 Jun 2020 17:26:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1592846819; 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=ZnKR7wYwyFJpS6HIoabAiBUthA9UTagFfPs6L4+DOqMuzQ9Nd1pxjBuwshUdtKODnQTzcV IwyK9y0oWOo2VxOb+g2JQBbrQFJtbDS5HI9/XU/ygzle5lrnWAe0LkMl/jaGcJ8V8dWILb SKb6VAN5UADCQONgGL4sPoOoNyxrYA8= X-MC-Unique: ADzJjk10O5mdkf1VLSc40g-1 From: Michal Privoznik To: qemu-devel@nongnu.org Subject: [PATCH v2 2/2] qga: Use qemu_get_host_name() instead of g_get_host_name() Date: Mon, 22 Jun 2020 19:26:45 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 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=207.211.31.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 02:57:26 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 --- 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