aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2022-09-29 17:28:09 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2022-09-29 17:28:09 -0400
commit80a05679d5a400b8f995740c175f8bdb060bb05c (patch)
treec30004c76eae7e7102d76fd43cbd98274a09e03d /src
parent551aa6b7b9f3b78e7b6cbab1fea70947fa7f4966 (diff)
downloadpostgresql-80a05679d5a400b8f995740c175f8bdb060bb05c.tar.gz
postgresql-80a05679d5a400b8f995740c175f8bdb060bb05c.zip
Fix bogus behavior of PQsslAttribute(conn, "library").
Commit ebc8b7d44 intended to change the behavior of PQsslAttribute(NULL, "library"), but accidentally also changed what happens with a non-NULL conn pointer. Undo that so that only the intended behavior change happens. Clarify some associated documentation. Per bug #17625 from Heath Lord. Back-patch to v15. Discussion: https://postgr.es/m/17625-fc47c78b7d71b534@postgresql.org
Diffstat (limited to 'src')
-rw-r--r--src/interfaces/libpq/fe-secure-openssl.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/interfaces/libpq/fe-secure-openssl.c b/src/interfaces/libpq/fe-secure-openssl.c
index aea4661736c..74b5c5987a6 100644
--- a/src/interfaces/libpq/fe-secure-openssl.c
+++ b/src/interfaces/libpq/fe-secure-openssl.c
@@ -1745,14 +1745,21 @@ PQsslAttributeNames(PGconn *conn)
const char *
PQsslAttribute(PGconn *conn, const char *attribute_name)
{
- if (strcmp(attribute_name, "library") == 0)
- return "OpenSSL";
-
if (!conn)
+ {
+ /* PQsslAttribute(NULL, "library") reports the default SSL library */
+ if (strcmp(attribute_name, "library") == 0)
+ return "OpenSSL";
return NULL;
+ }
+
+ /* All attributes read as NULL for a non-encrypted connection */
if (conn->ssl == NULL)
return NULL;
+ if (strcmp(attribute_name, "library") == 0)
+ return "OpenSSL";
+
if (strcmp(attribute_name, "key_bits") == 0)
{
static char sslbits_str[12];