From 9ee42a1e4765d2a5304d40b3dd9307138d0a8282 Mon Sep 17 00:00:00 2001 From: Marcus Brinkmann Date: Thu, 11 Mar 2004 14:31:20 +0000 Subject: [PATCH] *** empty log message *** --- gpgme/ChangeLog | 3 ++ gpgme/engine-gpgsm.c | 97 +++++++++++++++++++++++--------------------- 2 files changed, 53 insertions(+), 47 deletions(-) diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog index 9ca13c91..78586773 100644 --- a/gpgme/ChangeLog +++ b/gpgme/ChangeLog @@ -1,5 +1,8 @@ 2004-03-11 Marcus Brinkmann + * 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 diff --git a/gpgme/engine-gpgsm.c b/gpgme/engine-gpgsm.c index bbcdb425..291af9b6 100644 --- a/gpgme/engine-gpgsm.c +++ b/gpgme/engine-gpgsm.c @@ -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) - { + if (ttyname_r (1, dft_ttyname, sizeof (dft_ttyname))) + { 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) + else { - err = map_assuan_error (err); - goto leave; - } - - err = _gpgme_getenv ("TERM", &dft_ttytype); - if (err) - goto leave; - if (dft_ttytype) - { - 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