Clear the OpenSSL error queue before cryptohash operations
authorDaniel Gustafsson <dgustafsson@postgresql.org>
Fri, 6 May 2022 12:41:31 +0000 (14:41 +0200)
committerDaniel Gustafsson <dgustafsson@postgresql.org>
Fri, 6 May 2022 12:41:31 +0000 (14:41 +0200)
commit17ec5fa502d299b1919b1afacda839fb7d8206ad
treebccfedf100f58ba986f7fec0203837a8f6f58e87
parent59a32f00937c85fe944cf1fac3e8b98d091e2bc6
Clear the OpenSSL error queue before cryptohash operations

Setting up an EVP context for ciphers banned under FIPS generate
two OpenSSL errors in the queue, and as we only consume one from
the queue the other is at the head for the next invocation:

  postgres=# select md5('foo');
  ERROR:  could not compute MD5 hash: unsupported
  postgres=# select md5('foo');
  ERROR:  could not compute MD5 hash: initialization error

Clearing the error queue when creating the context ensures that
we don't pull in an error from an earlier operation.

Discussion: https://postgr.es/m/C89D932C-501E-4473-9750-638CFCD9095E@yesql.se
src/common/cryptohash_openssl.c
src/common/hmac_openssl.c