1
0
mirror of https://github.com/postgres/postgres.git synced 2025-08-06 18:42:54 +03:00

Some builds (depends on crypto engine support?) of OpenSSL

0.9.7x have EVP_DigestFinal function which which clears all of
EVP_MD_CTX.  This makes pgcrypto crash in functions which
re-use one digest context several times: hmac() and crypt()
with md5 algorithm.

Following patch fixes it by carring the digest info around
EVP_DigestFinal and re-initializing cipher.

Marko Kreen.
This commit is contained in:
Neil Conway
2005-03-13 23:46:27 +00:00
parent 5e72d01d20
commit 826f14f6d3

View File

@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: openssl.c,v 1.10.2.1 2005/03/13 23:42:07 neilc Exp $
* $Id: openssl.c,v 1.10.2.2 2005/03/13 23:46:27 neilc Exp $
*/
#include <postgres.h>
@@ -73,8 +73,15 @@ static void
digest_finish(PX_MD * h, uint8 *dst)
{
EVP_MD_CTX *ctx = (EVP_MD_CTX *) h->p.ptr;
const EVP_MD *md = EVP_MD_CTX_md(ctx);
EVP_DigestFinal(ctx, dst, NULL);
/*
* Some builds of 0.9.7x clear all of ctx in EVP_DigestFinal.
* Fix it by reinitializing ctx.
*/
EVP_DigestInit(ctx, md);
}
static void