From f0ca540374ee89b45bce83b499327ffd934344a8 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Fri, 7 Oct 2016 12:53:42 +0300 Subject: [PATCH] Clear OpenSSL error queue after failed X509_STORE_load_locations() call. Leaving the error in the error queue used to be harmless, because the X509_STORE_load_locations() call used to be the last step in initialize_SSL(), and we would clear the queue before the next SSL_connect() call. But previous commit moved things around. The symptom was that if a CRL file was not found, and one of the subsequent initialization steps, like loading the client certificate or private key, failed, we would incorrectly print the "no such file" error message from the earlier X509_STORE_load_locations() call as the reason. Backpatch to all supported versions, like the previous patch. --- src/interfaces/libpq/fe-secure-openssl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/interfaces/libpq/fe-secure-openssl.c b/src/interfaces/libpq/fe-secure-openssl.c index fc723cc083..0d0a3660f5 100644 --- a/src/interfaces/libpq/fe-secure-openssl.c +++ b/src/interfaces/libpq/fe-secure-openssl.c @@ -999,6 +999,7 @@ initialize_SSL(PGconn *conn) #endif } /* if not found, silently ignore; we do not require CRL */ + ERR_clear_error(); } have_rootcert = true; }