File gpgme-Treat-empty-DISPLAY-variable-as-unset.patch of Package gpgme
From d7fc266f2eeb28394d2f3668c9b503f4c1eb1726 Mon Sep 17 00:00:00 2001
From: Pedro Monreal <pmonrealgonzalez@suse.com>
Date: Wed, 22 Oct 2025 14:12:37 +0200
Subject: [PATCH] Treat empty DISPLAY variable as unset.
diff --git a/src/engine-assuan.c b/src/engine-assuan.c
index e96313ff..2916844d 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 && strlen(dft_display))
{
if (gpgrt_asprintf (&optstr, "OPTION display=%s", dft_display) < 0)
{
@@ -281,6 +281,11 @@ llass_new (void **engine, const char *file_name, const char *home_dir,
if (err)
goto leave;
}
+ else if (dft_display && !strlen(dft_display))
+ {
+ /* Treat empty DISPLAY as unset. */
+ free (dft_display);
+ }
}
if (llass->opt.gpg_agent)
diff --git a/src/engine-g13.c b/src/engine-g13.c
index e30c1834..c5ffdb56 100644
--- a/src/engine-g13.c
+++ b/src/engine-g13.c
@@ -268,21 +268,26 @@ 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 && strlen(dft_display))
{
if (gpgrt_asprintf (&optstr, "OPTION display=%s", dft_display) < 0)
{
- free (dft_display);
- err = gpg_error_from_syserror ();
- goto leave;
- }
+ free (dft_display);
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
free (dft_display);
err = assuan_transact (g13->assuan_ctx, optstr, NULL, NULL, NULL,
- NULL, NULL, NULL);
+ NULL, NULL, NULL);
gpgrt_free (optstr);
if (err)
- goto leave;
+ goto leave;
+ }
+ else if (dft_display && !strlen(dft_display))
+ {
+ /* Treat empty DISPLAY as unset. */
+ free (dft_display);
}
err = _gpgme_getenv ("GPG_TTY", &env_tty);
diff --git a/src/engine-gpg.c b/src/engine-gpg.c
index c6c5c4e6..e7ca320c 100644
--- a/src/engine-gpg.c
+++ b/src/engine-gpg.c
@@ -697,13 +697,18 @@ 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 && strlen(dft_display))
{
rc = add_gpg_arg_with_value (gpg, "--display=", dft_display, 0);
free (dft_display);
if (rc)
- goto leave;
+ goto leave;
+ }
+ else if (dft_display && !strlen(dft_display))
+ {
+ /* Treat empty DISPLAY as unset. */
+ free (dft_display);
}
rc = _gpgme_getenv ("GPG_TTY", &env_tty);
diff --git a/src/engine-gpgsm.c b/src/engine-gpgsm.c
index b482918c..f7669746 100644
--- a/src/engine-gpgsm.c
+++ b/src/engine-gpgsm.c
@@ -474,21 +474,26 @@ 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 && strlen(dft_display))
{
if (gpgrt_asprintf (&optstr, "OPTION display=%s", dft_display) < 0)
{
- free (dft_display);
- err = gpg_error_from_syserror ();
- goto leave;
- }
+ free (dft_display);
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
free (dft_display);
err = assuan_transact (gpgsm->assuan_ctx, optstr, NULL, NULL, NULL,
NULL, NULL, NULL);
gpgrt_free (optstr);
if (err)
- goto leave;
+ goto leave;
+ }
+ else if (dft_display && !strlen(dft_display))
+ {
+ /* Treat empty DISPLAY as unset. */
+ free (dft_display);
}
err = _gpgme_getenv ("GPG_TTY", &env_tty);
diff --git a/src/engine-uiserver.c b/src/engine-uiserver.c
index 6c89082e..fffda6a8 100644
--- a/src/engine-uiserver.c
+++ b/src/engine-uiserver.c
@@ -314,21 +314,26 @@ 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 && strlen(dft_display))
{
if (gpgrt_asprintf (&optstr, "OPTION display=%s", dft_display) < 0)
{
- err = gpg_error_from_syserror ();
- free (dft_display);
- goto leave;
- }
+ err = gpg_error_from_syserror ();
+ free (dft_display);
+ goto leave;
+ }
free (dft_display);
err = assuan_transact (uiserver->assuan_ctx, optstr, NULL, NULL, NULL,
NULL, NULL, NULL);
gpgrt_free (optstr);
if (err)
- goto leave;
+ goto leave;
+ }
+ else if (dft_display && !strlen(dft_display))
+ {
+ /* Treat empty DISPLAY as unset. */
+ free (dft_display);
}
err = _gpgme_getenv ("GPG_TTY", &env_tty);
--
2.51.1