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-assuan.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-assuan.c')
| -rw-r--r-- | src/engine-assuan.c | 10 | 
1 files changed, 4 insertions, 6 deletions
diff --git a/src/engine-assuan.c b/src/engine-assuan.c index 663b2eab..99024675 100644 --- a/src/engine-assuan.c +++ b/src/engine-assuan.c @@ -282,12 +282,10 @@ llass_new (void **engine, const char *file_name, const char *home_dir)        char *dft_ttytype = NULL;        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)  	    {  | 
