From 028a0ef3336c5180797fb247448683195376c007 Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Mon, 27 Jul 2015 16:19:52 +0900 Subject: 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 --- src/engine-gpgsm.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'src/engine-gpgsm.c') diff --git a/src/engine-gpgsm.c b/src/engine-gpgsm.c index 24d3b2a8..476e9ef3 100644 --- a/src/engine-gpgsm.c +++ b/src/engine-gpgsm.c @@ -408,12 +408,10 @@ gpgsm_new (void **engine, const char *file_name, const char *home_dir) int rc; rc = ttyname_r (1, dft_ttyname, sizeof (dft_ttyname)); - if (rc) - { - err = gpg_error_from_errno (rc); - goto leave; - } - else + + /* Even though isatty() returns 1, ttyname_r() may fail in many + ways, e.g., when /dev/pts is not accessible under chroot. */ + if (!rc) { if (asprintf (&optstr, "OPTION ttyname=%s", dft_ttyname) < 0) { -- cgit v1.2.3