libpq: Fix inadvertent change in .pgpass lookup behavior.

Commit 274bb2b385 caused password file
lookups to use the hostaddr in preference to the host, but that was
not intended and the documented behavior is the opposite.

Report and patch by Kyotaro Horiguchi.

Discussion: http://postgr.es/m/20170428.165432.60857995.horiguchi.kyotaro@lab.ntt.co.jp
This commit is contained in:
Robert Haas 2017-05-01 11:27:09 -04:00
parent fed6df486d
commit bdac9836d3

View File

@ -978,9 +978,18 @@ connectOptions2(PGconn *conn)
for (i = 0; i < conn->nconnhost; i++)
{
/* Try to get a password for this host from pgpassfile */
/*
* Try to get a password for this host from pgpassfile. We use host
* name rather than host address in the same manner to PQhost().
*/
char *pwhost = conn->connhost[i].host;
if (conn->connhost[i].type == CHT_HOST_ADDRESS &&
conn->pghost != NULL && conn->pghost[0] != '\0')
pwhost = conn->pghost;
conn->connhost[i].password =
passwordFromFile(conn->connhost[i].host,
passwordFromFile(pwhost,
conn->connhost[i].port,
conn->dbName,
conn->pguser,