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
This commit is contained in:
Tom Lane 2022-08-15 15:40:07 -04:00
parent 6e086bb1db
commit ee4a17e200

View File

@ -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);
}