From 80a05679d5a400b8f995740c175f8bdb060bb05c Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 29 Sep 2022 17:28:09 -0400 Subject: 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 --- src/interfaces/libpq/fe-secure-openssl.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/interfaces/libpq/fe-secure-openssl.c') 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]; -- cgit v1.2.3