Re: [PATCH] (Windows) psql echoes password when reading from pipe
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Matthew Stickney <mtstickney@gmail.com>
Cc: pgsql-hackers@lists.postgresql.org
Date: 2018-05-22T18:55:54Z
Lists: pgsql-hackers
Matthew Stickney <mtstickney@gmail.com> writes:
> On windows, if you pipe data to psql, the password prompt correctly
> reads from and writes to the console, but the password text is echoed to
> the console. This is because echoing is disabled on the handle for
> stdin, but as part of a pipeline stdin doesn't refer to the console.
> I've attached a patch that gets a handle to the console's input buffer
> by opening CONIN$ instead, which corrects the problem.
Thanks for the report and patch!
I know zip about Windows coding, but I can't help comparing this:
- t = GetStdHandle(STD_INPUT_HANDLE);
+ t = CreateFile("CONIN$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
to the code a little bit above:
termin = fopen("CONIN$", "r");
Is it possible to operate on "termin" instead of doing a second open
(which might fail, which we are failing to cope with :-()?
regards, tom lane
Commits
-
Fix simple_prompt() to disable echo on Windows when stdin != terminal.
- bed74e9d4959 10.5 landed
- bbaf75ee0c3a 9.6.10 landed
- 50485b3e201d 11.0 landed
- 3466b0202cd6 9.3.24 landed
- 09fb2d5d3b8f 9.4.19 landed
- 085791b8aace 9.5.14 landed