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

openSUSE Build Service is sponsored by