BUG: gpg(2)/pinentry-curses interaction faulty

Werner Koch wk at gnupg.org
Mon Oct 25 10:40:32 CEST 2004

On Sun, 24 Oct 2004 16:49:28 +0000, Albrecht Dreß said:

> The workaround for this problem is adding something like GPG_TTY=$(tty) to  
> e.g. .bashrc, but of course it would be better if gpg(2) like gpgsm would  
> set ttyname correctly.

They only try to set the tty correctly but they won't be able to do
this reliable.  As stated in the manual, setting GPG_TTY before
running a program using gpg or gpgsm is the only way to go.  The
problem is that ttyname(3) needs a file descriptor connected to the
TTY - this is not always the case.  It is also not possible to use
/dev/tty because the pinentry is called from a process without a
controlling terminal.

getenv("GPG_TTY") must always return a filename which can be opened as
a terminal.  That is, it shall return what you expect tty(1) to return
- even if there is no associated tty.  Remember that we are writing to
a tty from an unrelated background process.



More information about the Gnupg-devel mailing list