summaryrefslogtreecommitdiff
path: root/src
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:21 -0400
commite135c3d99f4fcb03efa7b0b64445853ee2a74857 (patch)
treed44105b24f98ba4b1b78760dff837223e411de9f /src
parent3b14a17c8e60e8ae9227b9533667743508056c35 (diff)
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).
Diffstat (limited to 'src')
-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 2728216022e..6181a616785 100644
--- a/src/bin/psql/command.c
+++ b/src/bin/psql/command.c
@@ -1753,7 +1753,8 @@ do_connect(char *dbname, char *user, char *host, char *port)
* positional 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);
@@ -1880,7 +1881,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);