postgres.git / summary / log / commit / refs

commit    ee4a17e200b72286c3a02cf6c572836652df2541
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 93c334b380e..2876b71a369 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: 6e086bb1dbeb]