meson.build | 6 ++++++ src/meson.build | 1 + src/util/virutil.c | 6 ++++++ 3 files changed, 13 insertions(+)
When libbsd is available, use the preferred readpassphrase() function isntead of getpass()
as the getpass() function has been marked as obsolete and shouldnt be used
Signed-off-by: Jakub Palacky <jpalacky@redhat.com>
---
meson.build | 6 ++++++
src/meson.build | 1 +
src/util/virutil.c | 6 ++++++
3 files changed, 13 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
+bsd_dep = dependency('libbsd', required: false)
+if bsd_dep.found()
+ conf.set('WITH_LIBBSD', 1)
+endif
+
capng_dep = dependency('libcap-ng', required: get_option('capng'))
if capng_dep.found()
conf.set('WITH_CAPNG', 1)
@@ -2335,6 +2340,7 @@ libs_summary = {
'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 = 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..2e07372198 100644
--- a/src/util/virutil.c
+++ b/src/util/virutil.c
@@ -31,6 +31,10 @@
# include <conio.h>
#endif /* WIN32 */
+#ifdef WITH_LIBBSD
+# include <bsd/readpassphrase.h>
+#endif
+
#ifdef __linux__
# include <sys/sysmacros.h>
#endif
@@ -1773,6 +1777,8 @@ char *virGetPassword(void)
}
return g_string_free(pw, FALSE);
+#elif WITH_LIBBSD /* !WIN32 */
+ return readpassphrase("", g_new0(char, 1024), 1024, 0);
#else /* !WIN32 */
return g_strdup(getpass(""));
#endif /* ! WIN32 */
--
2.46.0
On Wed, Sep 11, 2024 at 01:51:29PM +0200, Jakub Palacky wrote:
> When libbsd is available, use the preferred readpassphrase() function isntead of getpass()
> as the getpass() function has been marked as obsolete and shouldnt be used
>
> Signed-off-by: Jakub Palacky <jpalacky@redhat.com>
> ---
> meson.build | 6 ++++++
> src/meson.build | 1 +
> src/util/virutil.c | 6 ++++++
> 3 files changed, 13 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
>
> +bsd_dep = dependency('libbsd', required: false)
> +if bsd_dep.found()
> + conf.set('WITH_LIBBSD', 1)
> +endif
> +
> capng_dep = dependency('libcap-ng', required: get_option('capng'))
> if capng_dep.found()
> conf.set('WITH_CAPNG', 1)
> @@ -2335,6 +2340,7 @@ libs_summary = {
> '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 = 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..2e07372198 100644
> --- a/src/util/virutil.c
> +++ b/src/util/virutil.c
> @@ -31,6 +31,10 @@
> # include <conio.h>
> #endif /* WIN32 */
>
> +#ifdef WITH_LIBBSD
> +# include <bsd/readpassphrase.h>
> +#endif
> +
> #ifdef __linux__
> # include <sys/sysmacros.h>
> #endif
> @@ -1773,6 +1777,8 @@ char *virGetPassword(void)
> }
>
> return g_string_free(pw, FALSE);
> +#elif WITH_LIBBSD /* !WIN32 */
> + return readpassphrase("", g_new0(char, 1024), 1024, 0);
THe docs say that readpassphrase may return NULL on error, in which
case the result of "g_new0" here will be leaked. You need to stash
the g_new0 return pointer, and free it if readpassphrase returns
NULL.
> #else /* !WIN32 */
> return g_strdup(getpass(""));
> #endif /* ! WIN32 */
> --
> 2.46.0
>
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
© 2016 - 2026 Red Hat, Inc.