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:26 -0400
commiteb1525e8968e64c7ec31701fa02c6da999b58d1a (patch)
tree6401b0432b57e2199dca49a5b0f49a360195a725
parent58c58d1a9f4ba5372f683eb823e065ed12469e5e (diff)
downloadpostgresql-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.c6
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);