From: Noah Misch Date: Thu, 9 Jul 2015 00:44:21 +0000 (-0400) Subject: Fix null pointer dereference in "\c" psql command. X-Git-Tag: REL9_3_10~117 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=49008d64507858678becf59f7e7caa75afb04cf2;p=postgresql 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). --- diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 89bda00d1a..b655843122 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -1591,7 +1591,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); @@ -1718,7 +1719,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);