{"thread":{"id":"26023","subject":"git calls SSH_ASKPASS even if DISPLAY is not set","startedAt":"2010-12-11T03:24:28Z","lastAt":"2012-05-07T21:42:43Z","messageCount":8,"participants":["Xin Wang","Alexander Sulfrian","Junio C Hamano","Johannes Sixt","hvoigt","LarryMartell"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"157864","messageId":"AANLkTinES5dqt+JAMOrp7gAYJ4UgK9ipfEN9ag5qSCLp@mail.gmail.com","threadId":"26023","inReplyTo":null,"subject":"git calls SSH_ASKPASS even if DISPLAY is not set","fromName":"Xin Wang","fromEmail":"dram.wang@gmail.com","sentAt":"2010-12-11T03:24:28Z","receivedAt":"2010-12-11T03:24:28Z","isPatch":false,"sender":{"key":"dram.wang@gmail.com","avatar":null},"body":"Hi all,\n\nI'm using git 1.7.3.2 in Fedora 14. In Fedora, SSH_ASKPASS will set to\nbe /usr/libexec/openssh/gnome-ssh-askpass in\n/etc/profile.d/gnome-ssh-askpass.sh, so this environment is set by\nlogin shell, and it will still be set even when X11 is not inuse.\n\nAccording to ssh's manpage: \"If ssh does not have a terminal\nassociated with it but DISPLAY and SSH_ASKPASS are set, it will\nexecute the program specified by SSH_ASKPASS and open an X11 window to\nread the passphrase.\" But git will call SSH_ASKPASS even if there is a\nterminal associated with it and DISPLAY is not set, then following\nwarning is displayed and git failed to go through.\n\n$ git fetch\n\n(gnome-ssh-askpass:1487): Gtk-WARNING **: cannot open display:\n\nI think it‘s better if git could implement behavior conforming to ssh.\n\n\nThanks,\nXin Wang\n"},{"id":"157885","messageId":"1292157174-4033-1-git-send-email-alexander@sulfrian.net","threadId":"26023","inReplyTo":"AANLkTinES5dqt+JAMOrp7gAYJ4UgK9ipfEN9ag5qSCLp@mail.gmail.com","subject":"[RFC/PATCH] RE: git calls SSH_ASKPASS even if DISPLAY is not set","fromName":"Alexander Sulfrian","fromEmail":"alexander@sulfrian.net","sentAt":"2010-12-12T12:32:53Z","receivedAt":"2010-12-12T12:32:53Z","isPatch":true,"sender":{"key":"alexander@sulfrian.net","avatar":"https://avatars.githubusercontent.com/u/149450?v=4"},"body":"Hi,\nI prepared a patch to fix this behaviour. It is a simple patch that\nadds another check for the DISPLAY environment variable.\n\nBut I do not know, if this behaviour breaks something...\n\n\nThanks,\nAlex\n"},{"id":"157886","messageId":"1292157174-4033-2-git-send-email-alexander@sulfrian.net","threadId":"26023","inReplyTo":"AANLkTinES5dqt+JAMOrp7gAYJ4UgK9ipfEN9ag5qSCLp@mail.gmail.com","subject":"[PATCH] git_getpass: fix ssh-askpass behaviour","fromName":"Alexander Sulfrian","fromEmail":"alexander@sulfrian.net","sentAt":"2010-12-12T12:32:54Z","receivedAt":"2010-12-12T12:32:54Z","isPatch":true,"sender":{"key":"alexander@sulfrian.net","avatar":"https://avatars.githubusercontent.com/u/149450?v=4"},"body":"call ssh-askpass only if the display environment variable is also set\n---\n connect.c |    7 +++++--\n 1 files changed, 5 insertions(+), 2 deletions(-)\n\ndiff --git a/connect.c b/connect.c\nindex 57dc20c..2810e3b 100644\n--- a/connect.c\n+++ b/connect.c\n@@ -621,7 +621,7 @@ int finish_connect(struct child_process *conn)\n \n char *git_getpass(const char *prompt)\n {\n-\tconst char *askpass;\n+\tconst char *askpass, *display;\n \tstruct child_process pass;\n \tconst char *args[3];\n \tstatic struct strbuf buffer = STRBUF_INIT;\n@@ -631,7 +631,10 @@ char *git_getpass(const char *prompt)\n \t\taskpass = askpass_program;\n \tif (!askpass)\n \t\taskpass = getenv(\"SSH_ASKPASS\");\n-\tif (!askpass || !(*askpass)) {\n+\n+\t/* only call askpass if display is set */\n+\tdisplay = getenv(\"DISPLAY\");\n+\tif (!display || !(*display) || !askpass || !(*askpass))\n \t\tchar *result = getpass(prompt);\n \t\tif (!result)\n \t\t\tdie_errno(\"Could not read password\");\n-- \n1.7.2.2\n"},{"id":"157887","messageId":"20101212140754.36d6b469@laptop.localhost","threadId":"26023","inReplyTo":"1292157174-4033-2-git-send-email-alexander@sulfrian.net","subject":"Re: [PATCH] git_getpass: fix ssh-askpass behaviour","fromName":"Alexander Sulfrian","fromEmail":"alexander@sulfrian.net","sentAt":"2010-12-12T13:07:54Z","receivedAt":"2010-12-12T13:07:54Z","isPatch":true,"sender":{"key":"alexander@sulfrian.net","avatar":"https://avatars.githubusercontent.com/u/149450?v=4"},"body":"On Sun, 12 Dec 2010 13:32:54 +0100\nAlexander Sulfrian <alexander@sulfrian.net> wrote:\n\n> call ssh-askpass only if the display environment variable is also set\n\nOh forgot to sign-off... I'll wait if there are other comments and\nresend it in a few days.\n\nAlex\n"},{"id":"157905","messageId":"7voc8q7bdv.fsf@alter.siamese.dyndns.org","threadId":"26023","inReplyTo":"1292157174-4033-2-git-send-email-alexander@sulfrian.net","subject":"Re: [PATCH] git_getpass: fix ssh-askpass behaviour","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2010-12-13T00:41:00Z","receivedAt":"2010-12-13T00:41:00Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Alexander Sulfrian <alexander@sulfrian.net> writes:\n\n> call ssh-askpass only if the display environment variable is also set\n> ---\n\nI do not use it at all so I don't know for sure, but doesn't this break\nOSX?\n\n  20f3490 (web--browse: fix Mac OS X GUI detection for 10.6, 2009-09-14)\n\nis an example that you can be fully graphical without having DISPLAY set\nin some environment.  MinGW folks may want to chime in as well.\n\n>  connect.c |    7 +++++--\n>  1 files changed, 5 insertions(+), 2 deletions(-)\n>\n> diff --git a/connect.c b/connect.c\n> index 57dc20c..2810e3b 100644\n> --- a/connect.c\n> +++ b/connect.c\n> @@ -621,7 +621,7 @@ int finish_connect(struct child_process *conn)\n>  \n>  char *git_getpass(const char *prompt)\n>  {\n> -\tconst char *askpass;\n> +\tconst char *askpass, *display;\n>  \tstruct child_process pass;\n>  \tconst char *args[3];\n>  \tstatic struct strbuf buffer = STRBUF_INIT;\n> @@ -631,7 +631,10 @@ char *git_getpass(const char *prompt)\n>  \t\taskpass = askpass_program;\n>  \tif (!askpass)\n>  \t\taskpass = getenv(\"SSH_ASKPASS\");\n> -\tif (!askpass || !(*askpass)) {\n> +\n> +\t/* only call askpass if display is set */\n> +\tdisplay = getenv(\"DISPLAY\");\n> +\tif (!display || !(*display) || !askpass || !(*askpass))\n>  \t\tchar *result = getpass(prompt);\n>  \t\tif (!result)\n>  \t\t\tdie_errno(\"Could not read password\");\n"},{"id":"157940","messageId":"4D05EBE1.1020602@viscovery.net","threadId":"26023","inReplyTo":"1292157174-4033-2-git-send-email-alexander@sulfrian.net","subject":"Re: [PATCH] git_getpass: fix ssh-askpass behaviour","fromName":"Johannes Sixt","fromEmail":"j.sixt@viscovery.net","sentAt":"2010-12-13T09:48:17Z","receivedAt":"2010-12-13T09:48:17Z","isPatch":true,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"Am 12/12/2010 13:32, schrieb Alexander Sulfrian:\n> call ssh-askpass only if the display environment variable is also set\n\nNot good: On Windows, we want to call out to SSH_ASKPASS even if DISPLAY\nis not set (it almost never is).\n\n-- Hannes\n"},{"id":"158004","messageId":"20101213220003.GB2497@sandbox","threadId":"26023","inReplyTo":"7voc8q7bdv.fsf@alter.siamese.dyndns.org","subject":"Re: Re: [PATCH] git_getpass: fix ssh-askpass behaviour","fromName":"hvoigt","fromEmail":"hvoigt@hvoigt.net","sentAt":"2010-12-13T22:00:04Z","receivedAt":"2010-12-13T22:00:04Z","isPatch":true,"sender":{"key":"hvoigt@hvoigt.net","avatar":"https://avatars.githubusercontent.com/u/184958?v=4"},"body":"Hi,\n\nOn Sun, Dec 12, 2010 at 04:41:00PM -0800, Junio C Hamano wrote:\n> Alexander Sulfrian <alexander@sulfrian.net> writes:\n> \n> > call ssh-askpass only if the display environment variable is also set\n> > ---\n> \n> I do not use it at all so I don't know for sure, but doesn't this break\n> OSX?\n> \n>   20f3490 (web--browse: fix Mac OS X GUI detection for 10.6, 2009-09-14)\n> \n> is an example that you can be fully graphical without having DISPLAY set\n> in some environment.  MinGW folks may want to chime in as well.\n\nI am not sure about OSX because I just checked and there seems to be a\nDISPLAY variable set which seems to be used to start a X session on\ndemand. But MinGW definitely has no DISPLAY variable set by default.\n\nAdditionally GIT_ASKPASS/SSH_ASKPASS does not have to be a graphical\ntool does it? It could also be some program that looks up the password\nfrom some secure database.\n\nCheers Heiko\n"},{"id":"191043","messageId":"1336426963148-7537044.post@n2.nabble.com","threadId":"26023","inReplyTo":"AANLkTinES5dqt+JAMOrp7gAYJ4UgK9ipfEN9ag5qSCLp@mail.gmail.com","subject":"Re: git calls SSH_ASKPASS even if DISPLAY is not set","fromName":"LarryMartell","fromEmail":"larry.martell@gmail.com","sentAt":"2012-05-07T21:42:43Z","receivedAt":"2012-05-07T21:42:43Z","isPatch":false,"sender":{"key":"larry.martell@gmail.com","avatar":"https://gravatar.com/avatar/313d9bd902360d7f418940cc0b9ae47593b1b2ac2f606bb1621102c15705eca1?d=mp&s=160"},"body":"\nXin Wang wrote\n> \n> Hi all,\n> \n> I'm using git 1.7.3.2 in Fedora 14. In Fedora, SSH_ASKPASS will set to\n> be /usr/libexec/openssh/gnome-ssh-askpass in\n> /etc/profile.d/gnome-ssh-askpass.sh, so this environment is set by\n> login shell, and it will still be set even when X11 is not inuse.\n> \n> According to ssh's manpage: \"If ssh does not have a terminal\n> associated with it but DISPLAY and SSH_ASKPASS are set, it will\n> execute the program specified by SSH_ASKPASS and open an X11 window to\n> read the passphrase.\" But git will call SSH_ASKPASS even if there is a\n> terminal associated with it and DISPLAY is not set, then following\n> warning is displayed and git failed to go through.\n> \n> $ git fetch\n> \n> (gnome-ssh-askpass:1487): Gtk-WARNING **: cannot open display:\n> \n> I think it‘s better if git could implement behavior conforming to ssh.\n> \n> \n\n\nWe are getting this error on a new CentOS system we just set up. Was there\never a fix or workaround for this?\n\n-larry\n\n\n--\nView this message in context: http://git.661346.n2.nabble.com/git-calls-SSH-ASKPASS-even-if-DISPLAY-is-not-set-tp5825303p7537044.html\nSent from the git mailing list archive at Nabble.com.\n"}]}