Skip to content

Commit 408fe65

Browse files
committed
ecpg: Fix NULL pointer dereference during connection lookup
ECPGconnect() caches established connections to the server, supporting the case of a NULL connection name when a database name is not specified by its caller. A follow-up call to ECPGget_PGconn() to get an established connection from the cached set with a non-NULL name could cause a NULL pointer dereference if a NULL connection was listed in the cache and checked for a match. At least two connections are necessary to reproduce the issue: one with a NULL name and one with a non-NULL name. Author: Aleksander Alekseev <aleksander@tigerdata.com> Discussion: https://postgr.es/m/CAJ7c6TNvFTPUTZQuNAoqgzaSGz-iM4XR61D7vEj5PsQXwg2RyA@mail.gmail.com Backpatch-through: 13
1 parent 7efaf0a commit 408fe65

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/interfaces/ecpg/ecpglib/connect.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,12 @@ ecpg_get_connection_nr(const char *connection_name)
6666

6767
for (con = all_connections; con != NULL; con = con->next)
6868
{
69-
if (strcmp(connection_name, con->name) == 0)
69+
/*
70+
* Check for the case of a NULL connection name, stored as such in
71+
* the connection information by ECPGconnect() when the database
72+
* name is not specified by its caller.
73+
*/
74+
if (con->name != NULL && strcmp(connection_name, con->name) == 0)
7075
break;
7176
}
7277
ret = con;

0 commit comments

Comments
 (0)