mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +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:
		@@ -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"));
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user