File gpgme-Treat-empty-DISPLAY-variable-as-unset.patch of Package gpgme
From 94fa3c2b25a1979bb838c7d9f9f74375072f4efe Mon Sep 17 00:00:00 2001
From: Werner Koch <wk@gnupg.org>
Date: Fri, 14 Nov 2025 13:20:52 +0100
Subject: [PATCH] Treat empty DISPLAY envvar as unset.
* src/engine-gpg.c (gpg_new): Do not pass option --display if DISPLAY
is set to the empty string.
* src/engine-gpgsm.c (gpgsm_new): Likewiese for sending the display
option.
* src/engine-g13.c (g13_new): Ditto.
* src/engine-assuan.c (llass_new): Ditto.
* src/engine-uiserver.c (uiserver_new): Ditto.
--
GnuPG-bug-id: 7919
---
src/engine-assuan.c | 5 ++++-
src/engine-g13.c | 4 +++-
src/engine-gpg.c | 4 +++-
src/engine-gpgsm.c | 4 +++-
src/engine-uiserver.c | 4 +++-
5 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/src/engine-assuan.c b/src/engine-assuan.c
index e96313ff..654d41c8 100644
--- a/src/engine-assuan.c
+++ b/src/engine-assuan.c
@@ -265,7 +265,7 @@ llass_new (void **engine, const char *file_name, const char *home_dir,
err = _gpgme_getenv ("DISPLAY", &dft_display);
if (err)
goto leave;
- if (dft_display)
+ if (dft_display && *dft_display)
{
if (gpgrt_asprintf (&optstr, "OPTION display=%s", dft_display) < 0)
{
@@ -281,8 +281,11 @@ llass_new (void **engine, const char *file_name, const char *home_dir,
if (err)
goto leave;
}
+ else
+ free (dft_display);
}
+
if (llass->opt.gpg_agent)
err = _gpgme_getenv ("GPG_TTY", &env_tty);
diff --git a/src/engine-g13.c b/src/engine-g13.c
index e30c1834..c37800e6 100644
--- a/src/engine-g13.c
+++ b/src/engine-g13.c
@@ -268,7 +268,7 @@ g13_new (void **engine, const char *file_name, const char *home_dir,
err = _gpgme_getenv ("DISPLAY", &dft_display);
if (err)
goto leave;
- if (dft_display)
+ if (dft_display && *dft_display)
{
if (gpgrt_asprintf (&optstr, "OPTION display=%s", dft_display) < 0)
{
@@ -284,6 +284,8 @@ g13_new (void **engine, const char *file_name, const char *home_dir,
if (err)
goto leave;
}
+ else
+ free (dft_display);
err = _gpgme_getenv ("GPG_TTY", &env_tty);
if (isatty (1) || env_tty || err)
diff --git a/src/engine-gpg.c b/src/engine-gpg.c
index c6c5c4e6..4cc4dd83 100644
--- a/src/engine-gpg.c
+++ b/src/engine-gpg.c
@@ -697,7 +697,7 @@ gpg_new (void **engine, const char *file_name, const char *home_dir,
rc = _gpgme_getenv ("DISPLAY", &dft_display);
if (rc)
goto leave;
- if (dft_display)
+ if (dft_display && *dft_display)
{
rc = add_gpg_arg_with_value (gpg, "--display=", dft_display, 0);
@@ -705,6 +705,8 @@ gpg_new (void **engine, const char *file_name, const char *home_dir,
if (rc)
goto leave;
}
+ else
+ free (dft_display);
rc = _gpgme_getenv ("GPG_TTY", &env_tty);
if (isatty (1) || env_tty || rc)
diff --git a/src/engine-gpgsm.c b/src/engine-gpgsm.c
index ff77c8fc..d464aeed 100644
--- a/src/engine-gpgsm.c
+++ b/src/engine-gpgsm.c
@@ -474,7 +474,7 @@ gpgsm_new (void **engine, const char *file_name, const char *home_dir,
err = _gpgme_getenv ("DISPLAY", &dft_display);
if (err)
goto leave;
- if (dft_display)
+ if (dft_display && *dft_display)
{
if (gpgrt_asprintf (&optstr, "OPTION display=%s", dft_display) < 0)
{
@@ -490,6 +490,8 @@ gpgsm_new (void **engine, const char *file_name, const char *home_dir,
if (err)
goto leave;
}
+ else
+ free (dft_display);
err = _gpgme_getenv ("GPG_TTY", &env_tty);
if (isatty (1) || env_tty || err)
diff --git a/src/engine-uiserver.c b/src/engine-uiserver.c
index 6c89082e..aec07f30 100644
--- a/src/engine-uiserver.c
+++ b/src/engine-uiserver.c
@@ -314,7 +314,7 @@ uiserver_new (void **engine, const char *file_name, const char *home_dir,
err = _gpgme_getenv ("DISPLAY", &dft_display);
if (err)
goto leave;
- if (dft_display)
+ if (dft_display && *dft_display)
{
if (gpgrt_asprintf (&optstr, "OPTION display=%s", dft_display) < 0)
{
@@ -330,6 +330,8 @@ uiserver_new (void **engine, const char *file_name, const char *home_dir,
if (err)
goto leave;
}
+ else
+ free (dft_display);
err = _gpgme_getenv ("GPG_TTY", &env_tty);
if (isatty (1) || env_tty || err)
--
2.30.2