Re: BUG #10347: Can't write password to psql or pg_dump - Mailing list pgsql-bugs

From Noah Misch
Subject Re: BUG #10347: Can't write password to psql or pg_dump
Date
Msg-id 20140531024227.GA248952@tornado.leadboat.com
Whole thread Raw
In response to Re: BUG #10347: Can't write password to psql or pg_dump  (Andres Freund <andres@2ndquadrant.com>)
List pgsql-bugs
On Sun, May 18, 2014 at 12:23:24PM +0200, Andres Freund wrote:
> On 2014-05-16 20:34:09 +0000, derek_ealy@rapid7.com wrote:
> > On Windows systems the psql or pg_dump process always hangs after sending
> > the password to stdin of the process.
> >
> > I've gotten around this problem by setting an environment variable before
> > exec'ing the process. I set OSTYPES=msys. This forces psql to use stdin when
> > reading the password.
>
> I think the important point - and why I asked for a bugreport after
> talking about it on irc - is that sprompt.c on windows uses
> CONIN$/CONOUT$ for io. Ignoring stdin/stdout except when the OSTYPE is
> set to msys. Given that CONIN$/OUT seem to refer to the shell that
> started a processtree from a shell that doesn't seem to be optimal.

That code is trying to mimic the non-Windows behavior, which is to interact
with /dev/tty when available.  Unfortunately, CONIN$/CONOUT$ are ~always
nominally available, but they may not route to anything visible to the user.
The OSTYPE test is a crude attempt to anticipate that problem.
IsWindowVisible(GetConsoleWindow()) looked more reliable, but it still didn't
cover everything:
http://www.postgresql.org/message-id/flat/20121010110555.GA21405@tornado.leadboat.com

--
Noah Misch
EnterpriseDB                                 http://www.enterprisedb.com

pgsql-bugs by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: pg_upgrade < 9.3 -> >=9.3 misses a step around multixacts
Next
From: Andres Freund
Date:
Subject: Re: uninterruptable loop: concurrent delete in progress within table