From 02459bbd107d7bf04e97184a00d823c860688a51 Mon Sep 17 00:00:00 2001 From: Nathan Bossart Date: Fri, 12 Nov 2021 16:57:36 +0000 Subject: [PATCH v2 1/2] Adjust \password to use current user instead of authenticated user by default. --- src/bin/psql/command.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 49d4c0e3ce..5619ed685a 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -2023,11 +2023,24 @@ exec_command_password(PsqlScanState scan_state, bool active_branch) if (active_branch) { - char *opt0 = psql_scan_slash_option(scan_state, + char *user = psql_scan_slash_option(scan_state, OT_SQLID, NULL, true); char *pw1; char *pw2; + if (user == NULL) + { + /* Fetch current user so we can report whose PW will be changed */ + PGresult *res; + + res = PSQLexec("SELECT CURRENT_USER"); + if (!res) + return PSQL_CMD_ERROR; + + user = pg_strdup(PQgetvalue(res, 0, 0)); + PQclear(res); + } + pw1 = simple_prompt("Enter new password: ", false); pw2 = simple_prompt("Enter it again: ", false); @@ -2038,14 +2051,8 @@ exec_command_password(PsqlScanState scan_state, bool active_branch) } else { - char *user; char *encrypted_password; - if (opt0) - user = opt0; - else - user = PQuser(pset.db); - encrypted_password = PQencryptPasswordConn(pset.db, pw1, user, NULL); if (!encrypted_password) @@ -2072,8 +2079,8 @@ exec_command_password(PsqlScanState scan_state, bool active_branch) } } - if (opt0) - free(opt0); + if (user) + free(user); free(pw1); free(pw2); } -- 2.16.6