postgres.git / summary / log / commit / refs
commit 2a280832e1d0d79bfcaf7f394d9ead6880985032
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: Mon Aug 15 19:40:07 2022 +0000
First released in: 16.0, 10.23, 11.18, 12.13, 13.9, 14.6, 15.0
Add missing bad-PGconn guards in libpq entry points.
There's a convention that externally-visible libpq functions should
check for a NULL PGconn pointer, and fail gracefully instead of
crashing. PQflush() and PQisnonblocking() didn't get that memo
though. Also add a similar check to PQdefaultSSLKeyPassHook_OpenSSL;
while it's not clear that ordinary usage could reach that with a
null conn pointer, it's cheap enough to check, so let's be consistent.
Daniele Varrazzo and Tom Lane
Discussion: https://postgr.es/m/CA+mi_8Zm_mVVyW1iNFgyMd9Oh0Nv8-F+7Y3-BqwMgTMHuo_h2Q@mail.gmail.com
src/interfaces/libpq/fe-exec.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c
index 916eb45d4a8..41b2fcd9f5f 100644
--- a/src/interfaces/libpq/fe-exec.c
+++ b/src/interfaces/libpq/fe-exec.c
@@ -3221,6 +3221,8 @@ PQsetnonblocking(PGconn *conn, int arg)
int
PQisnonblocking(const PGconn *conn)
{
+ if (!conn || conn->status == CONNECTION_BAD)
+ return false;
return pqIsnonblocking(conn);
}
@@ -3240,6 +3242,8 @@ PQisthreadsafe(void)
int
PQflush(PGconn *conn)
{
+ if (!conn || conn->status == CONNECTION_BAD)
+ return -1;
return pqFlush(conn);
}
[parent: 1a05596eaaaa]