From c53016860b8e9c7d511efa86d6368456340343f5 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Sun, 28 Jul 2024 09:12:00 +0200 Subject: libpq: Use strerror_r instead of strerror Commit 453c4687377 introduced a use of strerror() into libpq, but that is not thread-safe. Fix by using strerror_r() instead. In passing, update some of the code comments added by 453c4687377, as we have learned more about the reason for the change in OpenSSL that started this. Reviewed-by: Daniel Gustafsson Discussion: Discussion: https://postgr.es/m/b6fb018b-f05c-4afd-abd3-318c649faf18@highgo.ca --- src/backend/libpq/be-secure-openssl.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/backend/libpq/be-secure-openssl.c') diff --git a/src/backend/libpq/be-secure-openssl.c b/src/backend/libpq/be-secure-openssl.c index 6e53a15cbde..4e07ad8cd19 100644 --- a/src/backend/libpq/be-secure-openssl.c +++ b/src/backend/libpq/be-secure-openssl.c @@ -1379,10 +1379,11 @@ SSLerrmessage(unsigned long ecode) return errreason; /* - * In OpenSSL 3.0.0 and later, ERR_reason_error_string randomly refuses to - * map system errno values. We can cover that shortcoming with this bit - * of code. Older OpenSSL versions don't have the ERR_SYSTEM_ERROR macro, - * but that's okay because they don't have the shortcoming either. + * In OpenSSL 3.0.0 and later, ERR_reason_error_string does not map system + * errno values anymore. (See OpenSSL source code for the explanation.) + * We can cover that shortcoming with this bit of code. Older OpenSSL + * versions don't have the ERR_SYSTEM_ERROR macro, but that's okay because + * they don't have the shortcoming either. */ #ifdef ERR_SYSTEM_ERROR if (ERR_SYSTEM_ERROR(ecode)) -- cgit v1.2.3