]> git.ipfire.org Git - thirdparty/postgresql.git/commit
pgcrypto: Detect errors with EVP calls from OpenSSL
authorMichael Paquier <michael@paquier.xyz>
Tue, 8 Dec 2020 06:22:43 +0000 (15:22 +0900)
committerMichael Paquier <michael@paquier.xyz>
Tue, 8 Dec 2020 06:22:43 +0000 (15:22 +0900)
commitd7ecba937b909c26cc266d06261ddaf5a540630e
tree41bbf30cc1816587a44f38dd53e3fef17351b35a
parent27b57f806dc2da9d43657c0ef9569be9aac11e1c
pgcrypto: Detect errors with EVP calls from OpenSSL

The following routines are called within pgcrypto when handling digests
but there were no checks for failures:
- EVP_MD_CTX_size (can fail with -1 as of 3.0.0)
- EVP_MD_CTX_block_size (can fail with -1 as of 3.0.0)
- EVP_DigestInit_ex
- EVP_DigestUpdate
- EVP_DigestFinal_ex

A set of elog(ERROR) is added by this commit to detect such failures,
that should never happen except in the event of a processing failure
internal to OpenSSL.

Note that it would be possible to use ERR_reason_error_string() to get
more context about such errors, but these refer mainly to the internals
of OpenSSL, so it is not really obvious how useful that would be.  This
is left out for simplicity.

Per report from Coverity.  Thanks to Tom Lane for the discussion.

Backpatch-through: 9.5
contrib/pgcrypto/openssl.c