diff options
author | Noah Misch <noah@leadboat.com> | 2015-07-08 20:44:21 -0400 |
---|---|---|
committer | Noah Misch <noah@leadboat.com> | 2015-07-08 20:44:26 -0400 |
commit | eb1525e8968e64c7ec31701fa02c6da999b58d1a (patch) | |
tree | 6401b0432b57e2199dca49a5b0f49a360195a725 | |
parent | 58c58d1a9f4ba5372f683eb823e065ed12469e5e (diff) | |
download | postgresql-eb1525e8968e64c7ec31701fa02c6da999b58d1a.tar.gz postgresql-eb1525e8968e64c7ec31701fa02c6da999b58d1a.zip |
Fix null pointer dereference in "\c" psql command.
The psql crash happened when no current connection existed. (The second
new check is optional given today's undocumented NULL argument handling
in PQhost() etc.) Back-patch to 9.0 (all supported versions).
-rw-r--r-- | src/bin/psql/command.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index d32516b1770..1f377cb7031 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -1627,7 +1627,8 @@ do_connect(char *dbname, char *user, char *host, char *port) * syntax. */ keep_password = - ((strcmp(user, PQuser(o_conn)) == 0) && + (o_conn && + (strcmp(user, PQuser(o_conn)) == 0) && (!host || strcmp(host, PQhost(o_conn)) == 0) && (strcmp(port, PQport(o_conn)) == 0) && !has_connection_string); @@ -1754,7 +1755,8 @@ do_connect(char *dbname, char *user, char *host, char *port) /* Tell the user about the new connection */ if (!pset.quiet) { - if (param_is_newly_set(PQhost(o_conn), PQhost(pset.db)) || + if (!o_conn || + param_is_newly_set(PQhost(o_conn), PQhost(pset.db)) || param_is_newly_set(PQport(o_conn), PQport(pset.db))) { char *host = PQhost(pset.db); |