mirror of
https://github.com/postgres/postgres.git
synced 2025-04-24 10:47:04 +03:00
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:
parent
bcf7eb99bb
commit
e37e9a6551
@ -3267,6 +3267,8 @@ PQsetnonblocking(PGconn *conn, int arg)
|
||||
int
|
||||
PQisnonblocking(const PGconn *conn)
|
||||
{
|
||||
if (!conn || conn->status == CONNECTION_BAD)
|
||||
return false;
|
||||
return pqIsnonblocking(conn);
|
||||
}
|
||||
|
||||
@ -3286,6 +3288,8 @@ PQisthreadsafe(void)
|
||||
int
|
||||
PQflush(PGconn *conn)
|
||||
{
|
||||
if (!conn || conn->status == CONNECTION_BAD)
|
||||
return -1;
|
||||
return pqFlush(conn);
|
||||
}
|
||||
|
||||
|
@ -1747,7 +1747,7 @@ err:
|
||||
int
|
||||
PQdefaultSSLKeyPassHook_OpenSSL(char *buf, int size, PGconn *conn)
|
||||
{
|
||||
if (conn->sslpassword)
|
||||
if (conn && conn->sslpassword)
|
||||
{
|
||||
if (strlen(conn->sslpassword) + 1 > size)
|
||||
fprintf(stderr, libpq_gettext("WARNING: sslpassword truncated\n"));
|
||||
|
Loading…
x
Reference in New Issue
Block a user