diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index 0dda1804a58179ce6d155e95fbec289f7fd27625..b83af64e090460ba5ae06fed64e289ae5de1d127 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -6312,22 +6312,23 @@ passwordFromFile(char *hostname, char *port, char *dbname, /* - * If the connection failed, we should mention if - * we got the password from the pgpassfile in case that - * password is wrong. + * If the connection failed due to bad password, we should mention + * if we got the password from the pgpassfile. */ static void pgpassfileWarning(PGconn *conn) { /* If it was 'invalid authorization', add pgpassfile mention */ /* only works with >= 9.0 servers */ - if (conn->pgpassfile_used && conn->password_needed && conn->result && - strcmp(PQresultErrorField(conn->result, PG_DIAG_SQLSTATE), - ERRCODE_INVALID_PASSWORD) == 0) + if (conn->pgpassfile_used && conn->password_needed && conn->result) { - appendPQExpBuffer(&conn->errorMessage, + const char *sqlstate = PQresultErrorField(conn->result, + PG_DIAG_SQLSTATE); + + if (sqlstate && strcmp(sqlstate, ERRCODE_INVALID_PASSWORD) == 0) + appendPQExpBuffer(&conn->errorMessage, libpq_gettext("password retrieved from file \"%s\"\n"), - conn->pgpassfile); + conn->pgpassfile); } }