pgsql: Fix errormessage for missing system CA in OpenSSL 3.1 - Mailing list pgsql-committers

From Daniel Gustafsson
Subject pgsql: Fix errormessage for missing system CA in OpenSSL 3.1
Date
Msg-id E1pp5Ve-003pE3-JI@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Fix errormessage for missing system CA in OpenSSL 3.1

The error message for a missing or invalid system CA when using
sslrootcert=system differs based on the OpenSSL version used.

In OpenSSL 1.0.1-3.0 it is reported as SSL Error, with varying
degrees of helpfulness in the error message. With OpenSSL 3.1 it
is reported as an SSL SYSCALL error with "Undefined error" as
the error message. This fix pulls out the particular error in
OpenSSL 3.1 as a certificate verify error in order to help the
user better figure out what happened, and to keep the ssl test
working. While there is no evidence that extracing the errors
will clobber errno, this adds a guard against that regardless
to also make the consistent with how we handle OpenSSL errors
elsewhere. It also memorizes the output from OpenSSL 3.0 in
the test in cases where the system CA isn't responding.

Reported-by: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Discussion: https://postgr.es/m/c39be3c5-c1a5-1e33-1024-16f527e251a4@enterprisedb.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/0b5d1fb36adda612bd3d5d032463a6eeb0729237

Modified Files
--------------
src/interfaces/libpq/fe-secure-openssl.c | 24 +++++++++++++++++++++---
src/test/ssl/t/001_ssltests.pl           |  4 +++-
2 files changed, 24 insertions(+), 4 deletions(-)


pgsql-committers by date:

Previous
From: Peter Eisentraut
Date:
Subject: pgsql: Remove some tabs in SQL code in C string literals
Next
From: Tom Lane
Date:
Subject: pgsql: Add missed case for tab completion of GRANT/REVOKE MAINTAIN.