Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fKytx-0008Dw-PN for pgsql-hackers@arkaria.postgresql.org; Tue, 22 May 2018 04:27:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fKytw-00084W-Ow for pgsql-hackers@arkaria.postgresql.org; Tue, 22 May 2018 04:27:56 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fKytw-00084M-Hy for pgsql-hackers@lists.postgresql.org; Tue, 22 May 2018 04:27:56 +0000 Received: from mail-qt0-x22a.google.com ([2607:f8b0:400d:c0d::22a]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fKytt-0003aU-Tn for pgsql-hackers@lists.postgresql.org; Tue, 22 May 2018 04:27:56 +0000 Received: by mail-qt0-x22a.google.com with SMTP id q6-v6so21787071qtn.3 for ; Mon, 21 May 2018 21:27:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:message-id:date:user-agent:mime-version :content-language; bh=JCakJlIZp0C6DHoDRjgC/JjMbUgq3KmanfTW++Bw7nw=; b=kYWqUz3NLLRjmKbF/u3Rt6qmA6k8syf81+lZuN178Eh/64tKxkeel+1+ezvgw584ae /J5g9HCiHUBhWp2KOPlW4gB6l43ndA/cryndZht+y5gov4RlOPjn6r3FxLYkJKOUCmbK OZ8AeU2njl2aYUO6GwlhN1iuh5EjB45OukjgZo5ISo3fCmcDiuH4tyF8Zl+wwZ/i261+ kyz2EoM6djC/1Ic2IkawaAUKyMGo6P8kBl/4jRYmdcQErFm4ebmyckjPVv7TPdwZ3lFD edC3BGC85m1tw2SlTqXft4qIX1TsprCwBkLz+eV1pWK4QmR5GHPBSMd2kh3DrwZFlJ9o m9fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-language; bh=JCakJlIZp0C6DHoDRjgC/JjMbUgq3KmanfTW++Bw7nw=; b=Sxakk8aPYQG3JEVNdW0NjqSRssGVKpGqW3gzwhpLYZ1f0dYfzlNJHWDuh+bnhNpxcb 4F3ntlxM307zjGHIJJ6FSAH5gKHxoPlIQdhN1VAXgWrqlA7g1mMhwixWav1+02UeewgD YNxl/Ne9CoXh0N5QR1jHQlmZuYZgWBlBULxqpYf7lU5rXuI5fUVo753di+VKx3hivMnX /wYQS1QROvjMYnztOXbSl+9DgYJwIGiwTUCQDwiFRflFbgiSBgXTthiM/3TA7dbl75GQ GyNtUUq3FIDZplH+ByHxOOYdvZQPFD/86EeryYc2dHCpV4/iDfimQQE0HlcdYj9RplGw Q6eg== X-Gm-Message-State: ALKqPwdhj+9ormUVkCM4fN7UAFVC9OXr52FgP2ufg5xlWccZ1QuqlmS6 MwUV9ifW6JuBV6pixGhwU4XVuBEn X-Google-Smtp-Source: AB8JxZpPmOBcz0O2co+IjIz/Xcjvdn+JacBctJuIiP3cr/CTpZIVaLpjD86z5uXTEALMhU0Y6fns3g== X-Received: by 2002:ac8:258e:: with SMTP id e14-v6mr21805236qte.347.1526963271839; Mon, 21 May 2018 21:27:51 -0700 (PDT) Received: from [192.168.1.3] ([98.2.214.213]) by smtp.gmail.com with ESMTPSA id l1-v6sm5303171qkk.40.2018.05.21.21.27.50 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 May 2018 21:27:51 -0700 (PDT) To: pgsql-hackers@lists.postgresql.org From: Matthew Stickney Subject: [PATCH] (Windows) psql echoes password when reading from pipe Message-ID: <502a1fff-862b-da52-1031-f68df6ed5a2d@gmail.com> Date: Tue, 22 May 2018 00:27:48 -0400 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------4C7867A3B04357AFECA067FC" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------4C7867A3B04357AFECA067FC Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit This is my first time submitting a patch here; apologies in advance if I flub the process. 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. I think the change is straightforward enough to apply directly, but there's another concern that might bear discussion: SetConsoleMode can fail, and when it does prompt input will be echoed (i.e. it's fail-open). Is it worth check for and reporting for an error there? Given that this is meant to be used interactively, I think the risk of someone not noticing the echo is low. -Matt Stickney --------------4C7867A3B04357AFECA067FC Content-Type: text/plain; charset=UTF-8; name="0001-Disable-input-echo-on-the-console-not-stdin.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Disable-input-echo-on-the-console-not-stdin.patch" RnJvbSAyN2EwZjliMjAzNjY4MDU2NGVmNmRmYTU0ZjM5NjFhZjIyMWNiYzUwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXR0aGV3IFN0aWNrbmV5IDxtdHN0aWNrbmV5QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAyMSBNYXkgMjAxOCAyMzoyNDozNCAtMDQwMApTdWJqZWN0 OiBbUEFUQ0hdIERpc2FibGUgaW5wdXQgZWNobyBvbiB0aGUgY29uc29sZSwgbm90IHN0ZGlu LgoKV2hlbiBkYXRhIGlzIHBpcGVkIHRvIHBzcWwsIGEgaGFuZGxlIHRvIHN0ZGluIHdpbGwg bm8gbG9uZ2VyIGJlIGEgaGFuZGxlCnRvIHRoZSBjb25zb2xlOyBTZXRDb25zb2xlTW9kZSB3 aWxsIGZhaWwsIGFuZCBwcm9tcHQgaW5wdXQgd2lsbCBiZSBlY2hvZWQKdG8gdGhlIHNjcmVl bi4KCkluc3RlYWQsIHVzZSBDcmVhdGVGaWxlIHRvIGdldCBhIGhhbmRsZSB0byB0aGUgY29u c29sZSdzIGlucHV0IGJ1ZmZlciBieQpvcGVuaW5nIENPTklOJCwgYW5kIHNldCB0aGUgY29u c29sZSBtb2RlIHRoZXJlLiBQcm9tcHQgaW5wdXQgaXMgYWxyZWFkeQpiZWluZyByZWFkIGZy b20gQ09OSU4kLCBzbyBub3cgcHJvbXB0LXJlbGF0ZWQgSS9PIG1vZGlmaWNhdGlvbnMgYWx0 ZXIgdGhlCnNhbWUgYnVmZmVyLgp0aGUgc2FtZSBidWZmZXIuCmNvbnNpc3RlbnRseS4KLS0t CiBzcmMvcG9ydC9zcHJvbXB0LmMgfCAzICsrLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9wb3J0L3Nwcm9tcHQu YyBiL3NyYy9wb3J0L3Nwcm9tcHQuYwppbmRleCA3MGRmYTY5ZDdiLi5mNTdiNDliZDNhIDEw MDY0NAotLS0gYS9zcmMvcG9ydC9zcHJvbXB0LmMKKysrIGIvc3JjL3BvcnQvc3Byb21wdC5j CkBAIC0xMTIsNyArMTEyLDcgQEAgc2ltcGxlX3Byb21wdChjb25zdCBjaGFyICpwcm9tcHQs IGNoYXIgKmRlc3RpbmF0aW9uLCBzaXplX3QgZGVzdGxlbiwgYm9vbCBlY2hvKQogCWlmICgh ZWNobykKIAl7CiAJCS8qIGdldCBhIG5ldyBoYW5kbGUgdG8gdHVybiBlY2hvIG9mZiAqLwot CQl0ID0gR2V0U3RkSGFuZGxlKFNURF9JTlBVVF9IQU5ETEUpOworCQl0ID0gQ3JlYXRlRmls ZSgiQ09OSU4kIiwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgRklMRV9TSEFSRV9S RUFEIHwgRklMRV9TSEFSRV9XUklURSwgTlVMTCwgT1BFTl9FWElTVElORywgMCwgTlVMTCk7 CiAKIAkJLyogc2F2ZSB0aGUgb2xkIGNvbmZpZ3VyYXRpb24gZmlyc3QgKi8KIAkJR2V0Q29u c29sZU1vZGUodCwgJnRfb3JpZyk7CkBAIC0xNjQsNiArMTY0LDcgQEAgc2ltcGxlX3Byb21w dChjb25zdCBjaGFyICpwcm9tcHQsIGNoYXIgKmRlc3RpbmF0aW9uLCBzaXplX3QgZGVzdGxl biwgYm9vbCBlY2hvKQogCXsKIAkJLyogcmVzZXQgdG8gdGhlIG9yaWdpbmFsIGNvbnNvbGUg bW9kZSAqLwogCQlTZXRDb25zb2xlTW9kZSh0LCB0X29yaWcpOworCQlDbG9zZUhhbmRsZSh0 KTsKIAkJZnB1dHMoIlxuIiwgdGVybW91dCk7CiAJCWZmbHVzaCh0ZXJtb3V0KTsKIAl9Ci0t IAoyLjE2LjIud2luZG93cy4xCgo= --------------4C7867A3B04357AFECA067FC--