From nobody Sun Feb 8 11:20:44 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1726058235638469.8737239479633; Wed, 11 Sep 2024 05:37:15 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 8C8DD1287; Wed, 11 Sep 2024 08:37:14 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 4F314CD0; Wed, 11 Sep 2024 08:36:52 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 220B515E0; Wed, 11 Sep 2024 08:36:50 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 839B415AC for ; Wed, 11 Sep 2024 08:36:49 -0400 (EDT) Received: from mail-ej1-f69.google.com (mail-ej1-f69.google.com [209.85.218.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-147-qQJtMyhkN1ObqeMPXZ8R4A-1; Wed, 11 Sep 2024 08:36:48 -0400 Received: by mail-ej1-f69.google.com with SMTP id a640c23a62f3a-a8a92ab4dd0so102735966b.1 for ; Wed, 11 Sep 2024 05:36:46 -0700 (PDT) Received: from jpalacky-thinkpadt14sgen2i.tpb.csb (nat-pool-brq-u.redhat.com. [213.175.37.12]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a8d25d74e26sm612717266b.225.2024.09.11.05.36.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Sep 2024 05:36:43 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1726058209; 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; bh=SkPBTd6UqxNMA8Pqle8Hd0vrPnL4/2uYdmceZXnaieA=; b=Xpck566LjWF2UQH/AbRRgojzDHkaMskysZ4mnjYYCPY55i0vLYrPupxb7MhZKXum//ZVGA 28yDyDJR6Q2j6YUUO0nij6ZFq4F8siQsKp6z2oqAngSFuWvwk6VBwPmdwwIgH1pIwtC9Bg TWRx/8bun51LDUpaOdbt1IsMbJe3yhM= X-MC-Unique: qQJtMyhkN1ObqeMPXZ8R4A-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726058205; x=1726663005; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=SkPBTd6UqxNMA8Pqle8Hd0vrPnL4/2uYdmceZXnaieA=; b=UGB4PrQsuYe6guY3t8O+QTNUxIr7MRVBojuu0GTu3DNRBbmEfD5Y7avNbogM49Y9Rw XIsEDz1Wb03I7mYECZ1h9mG6SHQOoQjRNvy/kqRwrMrJ3d6Nyl/hLuAecZzenFeTwZXj Waao6V6Z5c/qpjfoF/xHemGSb8urQicH8jool96zF95IS/vhZiW6Hkb0n4PTgEfFQBWq w4ROKhnSFVo/gzRPFE75GJUirkPAMVRDz+SrPRUZ58a3peqw0V3a89DXk5EEl0/YfGF5 35fDv6xXr/pi5ZW92V228Fu2VfVXo1s/g0xK7D7LAM61hOIZpFaKtprrLT7pELdFCQnn ZHiw== X-Gm-Message-State: AOJu0YyDHDvXiSgRL/6XC8xhFobgCxLsLn94iUTK/GFL1t8aYJSdTzqt vTa6YgEUYgjF0nX/QNEDcf5F4E2agq96tIq3IXsKtX8uR7TtHv8g0XwqvvwxZj2mNIPgZ8qG3t3 MbRx1KfKQM7P6mlrKZcAUsQhwQvGPcZN9usP4FTrXl3O6zK4c4Dl1DseRj+CUuATK/N+gLBQtZq lB/Cu5KViFMBsfsocDJxMnsa+j2pV5B0wCMXrdR0g= X-Received: by 2002:a17:907:94d5:b0:a8d:495b:c52d with SMTP id a640c23a62f3a-a900487f91emr233495066b.33.1726058205099; Wed, 11 Sep 2024 05:36:45 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGNzTaJlvmtwRs+/5N8V80fAQfQi1O0vBO0IkhuNNXqEdr6ezgsTCgmInqS6zIJ0fJqIVlhEA== X-Received: by 2002:a17:907:94d5:b0:a8d:495b:c52d with SMTP id a640c23a62f3a-a900487f91emr233491566b.33.1726058204326; Wed, 11 Sep 2024 05:36:44 -0700 (PDT) From: Jakub Palacky To: devel@lists.libvirt.org Subject: [PATCH v2] util/virutil: Use readpassphrase when libbsd is available Date: Wed, 11 Sep 2024 14:36:40 +0200 Message-ID: <20240911123640.373468-1-jpalacky@redhat.com> X-Mailer: git-send-email 2.46.0 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: RZT2PRUULNMR3YPKGEUXPKKY7LXKDPFX X-Message-ID-Hash: RZT2PRUULNMR3YPKGEUXPKKY7LXKDPFX X-MailFrom: jpalacky@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: Jakub Palacky X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1726058237878116600 Content-Type: text/plain; charset="utf-8"; x-default="true" When libbsd is available, use the preferred readpassphrase() function isnte= ad of getpass() as the getpass() function has been marked as obsolete and shouldnt be used Signed-off-by: Jakub Palacky Reviewed-by: Michal Privoznik --- Changes in v2: - Fix possible memory leak of g_new0 - Use PASS_MAX for max password length - Set PASS_MAX to 1024 if not defined meson.build | 6 ++++++ src/meson.build | 1 + src/util/virutil.c | 17 +++++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/meson.build b/meson.build index 297fbfae48..699a65c7e8 100644 --- a/meson.build +++ b/meson.build @@ -954,6 +954,11 @@ if blkid_dep.found() conf.set('WITH_BLKID', 1) endif =20 +bsd_dep =3D dependency('libbsd', required: false) +if bsd_dep.found() + conf.set('WITH_LIBBSD', 1) +endif + capng_dep =3D dependency('libcap-ng', required: get_option('capng')) if capng_dep.found() conf.set('WITH_CAPNG', 1) @@ -2335,6 +2340,7 @@ libs_summary =3D { 'dlopen': dlopen_dep.found(), 'fuse': fuse_dep.found(), 'glusterfs': glusterfs_dep.found(), + 'libbsd': bsd_dep.found(), 'libiscsi': libiscsi_dep.found(), 'libkvm': libkvm_dep.found(), 'libnbd': libnbd_dep.found(), diff --git a/src/meson.build b/src/meson.build index 8cce42c7ad..30ae34646e 100644 --- a/src/meson.build +++ b/src/meson.build @@ -9,6 +9,7 @@ src_dep =3D declare_dependency( dependencies: [ glib_dep, libxml_dep, + bsd_dep, ], include_directories: [ libvirt_inc, diff --git a/src/util/virutil.c b/src/util/virutil.c index 6c89a48e51..bf6008fdfb 100644 --- a/src/util/virutil.c +++ b/src/util/virutil.c @@ -31,6 +31,10 @@ # include #endif /* WIN32 */ =20 +#ifdef WITH_LIBBSD +# include +#endif + #ifdef __linux__ # include #endif @@ -1773,6 +1777,19 @@ char *virGetPassword(void) } =20 return g_string_free(pw, FALSE); +#elif WITH_LIBBSD /* !WIN32 */ +# ifndef PASS_MAX +# define PASS_MAX 1024 +# endif + char *pass =3D NULL; + g_autofree char *buffer =3D g_new0(char, PASS_MAX); + + pass =3D readpassphrase("", buffer, PASS_MAX, 0); + if (pass =3D=3D NULL) { + return NULL; + } + + return g_steal_pointer(&buffer); #else /* !WIN32 */ return g_strdup(getpass("")); #endif /* ! WIN32 */ --=20 2.46.0