diff options
author | Daiki Ueno <[email protected]> | 2015-07-27 07:19:52 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2015-08-25 17:11:30 +0000 |
commit | 028a0ef3336c5180797fb247448683195376c007 (patch) | |
tree | bc399a9d05095ee3b277dce3eebb50ba437419ea /src/engine-gpg.c | |
parent | Cleanup layout of gpgme.h (diff) | |
download | gpgme-028a0ef3336c5180797fb247448683195376c007.tar.gz gpgme-028a0ef3336c5180797fb247448683195376c007.zip |
Relax ttyname_r error checks
* src/engine-assuan.c (llass_new): Don't treat ttyname_r error as
fatal.
* src/engine-g13.c (g13_new): Likewise.
* src/engine-gpg.c (gpg_new): Likewise.
* src/engine-gpgsm.c (gpgsm_new): Likewise.
* src/engine-uiserver.c (uiserver_new): Likewise.
--
Even though isatty() returns 1, ttyname_r() may fail in many ways, e.g.,
when /dev/pts is not accessible under chroot. Since all our uses of
ttyname_r() require that the function works, we can treat the failure as
if isatty() fails.
Signed-off-by: Daiki Ueno <[email protected]>
Diffstat (limited to 'src/engine-gpg.c')
-rw-r--r-- | src/engine-gpg.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/engine-gpg.c b/src/engine-gpg.c index ffae2fe4..9efced25 100644 --- a/src/engine-gpg.c +++ b/src/engine-gpg.c @@ -513,6 +513,8 @@ gpg_new (void **engine, const char *file_name, const char *home_dir) rc = add_arg (gpg, dft_display); free (dft_display); + if (rc) + goto leave; } if (isatty (1)) @@ -520,9 +522,10 @@ gpg_new (void **engine, const char *file_name, const char *home_dir) int err; err = ttyname_r (1, dft_ttyname, sizeof (dft_ttyname)); - if (err) - rc = gpg_error_from_errno (err); - else + + /* Even though isatty() returns 1, ttyname_r() may fail in many + ways, e.g., when /dev/pts is not accessible under chroot. */ + if (!err) { if (*dft_ttyname) { @@ -547,9 +550,9 @@ gpg_new (void **engine, const char *file_name, const char *home_dir) free (dft_ttytype); } + if (rc) + goto leave; } - if (rc) - goto leave; } leave: |