From 458ccbf2b3a9a8566a405368825954cf99b8dbef Mon Sep 17 00:00:00 2001 From: Noah Misch Date: Wed, 8 Jul 2015 20:44:21 -0400 Subject: [PATCH] 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). --- src/bin/psql/command.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 1f6c1914fef..b9880fcc577 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -1526,7 +1526,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); @@ -1649,7 +1650,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); -- 2.39.5