Clear OpenSSL error queue after failed X509_STORE_load_locations() call.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Fri, 7 Oct 2016 09:53:42 +0000 (12:53 +0300)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Fri, 7 Oct 2016 09:53:42 +0000 (12:53 +0300)
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

index fc723cc083b9f47de0928daf74ff7aa67c6200f2..0d0a3660f50fef977796f610ac2812d538d30ce0 100644 (file)
@@ -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;
    }