]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Cope with a deficiency in OpenSSL 3.x's error reporting.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 8 Mar 2024 00:37:51 +0000 (19:37 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 8 Mar 2024 00:37:51 +0000 (19:37 -0500)
commitc42e5fdcfa1b2ed1def2b10c771bf0149115df08
tree6a8c9197435ae509e78ed9239e627dc62a7b218a
parent69e8f9dadb01377b8b757aa892ef00ce377f047e
Cope with a deficiency in OpenSSL 3.x's error reporting.

In OpenSSL 3.0.0 and later, ERR_reason_error_string randomly refuses
to provide a string for error codes representing system errno values
(e.g., "No such file or directory").  There is a poorly-documented way
to extract the errno from the SSL error code in this case, so do that
and apply strerror, rather than falling back to reporting the error
code's numeric value as we were previously doing.

Problem reported by David Zhang, although this is not his proposed
patch; it's instead based on a suggestion from Heikki Linnakangas.
Back-patch to all supported branches, since any of them are likely
to be used with recent OpenSSL.

Discussion: https://postgr.es/m/b6fb018b-f05c-4afd-abd3-318c649faf18@highgo.ca
src/backend/libpq/be-secure-openssl.c
src/interfaces/libpq/fe-secure-openssl.c