postgres.git / summary / log / commit / refs

commit    49008d64507858678becf59f7e7caa75afb04cf2
Author:   Noah Misch <noah@leadboat.com>
Date:     Thu Jul 09 00:44:21 2015 +0000

    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 89bda00d1ae..b6558431225 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); [parent: dca992d8b099]