*** empty log message ***
authorMarcus Brinkmann <mb@g10code.com>
Thu, 11 Mar 2004 14:31:20 +0000 (14:31 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Thu, 11 Mar 2004 14:31:20 +0000 (14:31 +0000)
gpgme/ChangeLog
gpgme/engine-gpgsm.c

index 9ca13c91df6f83523fd007ad67bdfc7a9952328c..785867737ff657a996d9258c50425a9fe4a1b32a 100644 (file)
@@ -1,5 +1,8 @@
 2004-03-11  Marcus Brinkmann  <marcus@g10code.de>
 
+       * engine-gpgsm.c (gpgsm_new): Protect all tty related code with
+       isatty().
+
        * rungpg.c (gpg_cancel): Set GPG->fd_data_map to NULL after
        releasing it.
        * engine-gpgsm.c (gpgsm_cancel): Only call assuan_disconnect if
index bbcdb4251cd3882884ba326ae7e7eec4404bad2e..291af9b6cbe288f0f3ec44d419f293c1af3bcdf8 100644 (file)
@@ -445,40 +445,20 @@ gpgsm_new (void **engine, const char *lc_ctype, const char *lc_messages)
        }
     }
 
-  if (ttyname_r (1, dft_ttyname, sizeof (dft_ttyname)))
+  if (isatty (1))
     {
-      err = gpg_error_from_errno (errno);
-      goto leave;
-    }
-  else
-    {
-      if (asprintf (&optstr, "OPTION ttyname=%s", dft_ttyname) < 0)
-        {
-         err = gpg_error_from_errno (errno);
-         goto leave;
-       }
-      err = assuan_transact (gpgsm->assuan_ctx, optstr, NULL, NULL, NULL,
-                            NULL, NULL, NULL);
-      free (optstr);
-      if (err)
+      if (ttyname_r (1, dft_ttyname, sizeof (dft_ttyname)))
        {
-         err = map_assuan_error (err);
+         err = gpg_error_from_errno (errno);
          goto leave;
        }
-
-      err = _gpgme_getenv ("TERM", &dft_ttytype);
-      if (err)
-       goto leave;
-      if (dft_ttytype)
+      else
        {
-         if (asprintf (&optstr, "OPTION ttytype=%s", dft_ttytype) < 0)
+         if (asprintf (&optstr, "OPTION ttyname=%s", dft_ttyname) < 0)
            {
-             free (dft_ttytype);
              err = gpg_error_from_errno (errno);
              goto leave;
            }
-         free (dft_ttytype);
-
          err = assuan_transact (gpgsm->assuan_ctx, optstr, NULL, NULL, NULL,
                                 NULL, NULL, NULL);
          free (optstr);
@@ -487,39 +467,62 @@ gpgsm_new (void **engine, const char *lc_ctype, const char *lc_messages)
              err = map_assuan_error (err);
              goto leave;
            }
-       }
 
-      if (lc_ctype)
-       {
-         if (asprintf (&optstr, "OPTION lc-ctype=%s", lc_ctype) < 0)
-           err = gpg_error_from_errno (errno);
-         else
+         err = _gpgme_getenv ("TERM", &dft_ttytype);
+         if (err)
+           goto leave;
+         if (dft_ttytype)
            {
+             if (asprintf (&optstr, "OPTION ttytype=%s", dft_ttytype) < 0)
+               {
+                 free (dft_ttytype);
+                 err = gpg_error_from_errno (errno);
+                 goto leave;
+               }
+             free (dft_ttytype);
+
              err = assuan_transact (gpgsm->assuan_ctx, optstr, NULL, NULL,
                                     NULL, NULL, NULL, NULL);
              free (optstr);
              if (err)
-               err = map_assuan_error (err);
+               {
+                 err = map_assuan_error (err);
+                 goto leave;
+               }
            }
-       }
-      if (err)
-       goto leave;
 
-      if (lc_messages)
-       {
-         if (asprintf (&optstr, "OPTION lc-messages=%s", lc_messages) < 0)
-           err = gpg_error_from_errno (errno);
-         else
+         if (lc_ctype)
            {
-             err = assuan_transact (gpgsm->assuan_ctx, optstr, NULL, NULL,
-                                    NULL, NULL, NULL, NULL);
-             free (optstr);
-             if (err)
-               err = map_assuan_error (err);
+             if (asprintf (&optstr, "OPTION lc-ctype=%s", lc_ctype) < 0)
+               err = gpg_error_from_errno (errno);
+             else
+               {
+                 err = assuan_transact (gpgsm->assuan_ctx, optstr, NULL, NULL,
+                                        NULL, NULL, NULL, NULL);
+                 free (optstr);
+                 if (err)
+                   err = map_assuan_error (err);
+               }
            }
+         if (err)
+           goto leave;
+
+         if (lc_messages)
+           {
+             if (asprintf (&optstr, "OPTION lc-messages=%s", lc_messages) < 0)
+               err = gpg_error_from_errno (errno);
+             else
+               {
+                 err = assuan_transact (gpgsm->assuan_ctx, optstr, NULL, NULL,
+                                        NULL, NULL, NULL, NULL);
+                 free (optstr);
+                 if (err)
+                   err = map_assuan_error (err);
+               }
+           }
+         if (err)
+           goto leave;
        }
-      if (err)
-       goto leave;
     }
 
   if (!err