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-318c649fa...@highgo.ca Branch ------ REL_16_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/6a2c80e955a83e8683f1f4d1ef583250bc4b9631 Modified Files -------------- src/backend/libpq/be-secure-openssl.c | 19 ++++++++++++++++--- src/interfaces/libpq/fe-secure-openssl.c | 23 ++++++++++++++++++++--- 2 files changed, 36 insertions(+), 6 deletions(-)