On Mon, Jan 20, 2020 at 07:44:25PM +0100, David Fetter wrote: > On Mon, Jan 20, 2020 at 01:12:35PM -0500, Tom Lane wrote: > > David Fetter <da...@fetter.org> writes: > > > At least two cloud providers are now stuffing large amounts of > > > information into the password field. This change makes it possible to > > > accommodate that usage in interactive sessions. > > > > Like who? > > AWS and Azure are two examples I know of. > > > It seems like a completely silly idea. And if 2K is sane, why not > > much more? > > Good question. Does it make sense to rearrange these things so they're > allocated at runtime instead of compile time? > > > (I can't say that s/100/2048/ in one place is a particularly evil > > change; what bothers me is the likelihood that there are other > > places that won't cope with arbitrarily long passwords. Not all of > > them are necessarily under our control, either.) > > I found one that is, so please find attached the next revision of the > patch.
I found another place that assumes 100 bytes and upped it to 2048. Best, David. -- David Fetter <david(at)fetter(dot)org> http://fetter.org/ Phone: +1 415 235 3778 Remember to vote! Consider donating to Postgres: http://www.postgresql.org/about/donate
>From fb05bf709df0a67a63bca413cd7f0f276cab78b9 Mon Sep 17 00:00:00 2001 From: David Fetter <da...@fetter.org> Date: Mon, 20 Jan 2020 09:58:19 -0800 Subject: [PATCH v3] Increase psql's password buffer size To: hackers MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------2.24.1" This is a multi-part message in MIME format. --------------2.24.1 Content-Type: text/plain; charset=UTF-8; format=fixed Content-Transfer-Encoding: 8bit At least two cloud providers are now stuffing large amounts of information into the password field. This makes it possible to accommodate that usage in interactive sessions. diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index e111cee556..61386fe4ae 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -1827,8 +1827,8 @@ exec_command_password(PsqlScanState scan_state, bool active_branch) { char *opt0 = psql_scan_slash_option(scan_state, OT_SQLID, NULL, true); - char pw1[100]; - char pw2[100]; + char pw1[2048]; + char pw2[2048]; simple_prompt("Enter new password: ", pw1, sizeof(pw1), false); simple_prompt("Enter it again: ", pw2, sizeof(pw2), false); @@ -2845,7 +2845,7 @@ copy_previous_query(PQExpBuffer query_buf, PQExpBuffer previous_buf) static char * prompt_for_password(const char *username) { - char buf[100]; + char buf[2048]; if (username == NULL || username[0] == '\0') simple_prompt("Password: ", buf, sizeof(buf), false); diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c index 3302bd4dd3..a7e3263979 100644 --- a/src/bin/psql/startup.c +++ b/src/bin/psql/startup.c @@ -120,7 +120,7 @@ main(int argc, char *argv[]) struct adhoc_opts options; int successResult; bool have_password = false; - char password[100]; + char password[2048]; bool new_pass; pg_logging_init(argv[0]); --------------2.24.1--