aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoah Misch <noah@leadboat.com>2015-07-08 20:44:21 -0400
committerNoah Misch <noah@leadboat.com>2015-07-08 20:44:27 -0400
commit5f173a9f2a9726c3be9f47eb2081ec4b089bf046 (patch)
tree349a1adfea4b01de9fc8b958d978d144110669dc
parenta788cbfdc406952ec41e34b1df64e65128021312 (diff)
downloadpostgresql-5f173a9f2a9726c3be9f47eb2081ec4b089bf046.tar.gz
postgresql-5f173a9f2a9726c3be9f47eb2081ec4b089bf046.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.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c
index 2483dbbad47..aa84237e8b8 100644
--- a/src/bin/psql/command.c
+++ b/src/bin/psql/command.c
@@ -1487,7 +1487,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);
@@ -1610,7 +1611,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);