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

openSUSE Build Service is sponsored by