diff options
-rw-r--r-- | contrib/pgcrypto/openssl.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/contrib/pgcrypto/openssl.c b/contrib/pgcrypto/openssl.c index 689b150e815..51b57bbf30b 100644 --- a/contrib/pgcrypto/openssl.c +++ b/contrib/pgcrypto/openssl.c @@ -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 |