summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/pkcs7
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/pkcs7')
-rw-r--r--src/lib/libcrypto/pkcs7/pk7_doit.c34
1 files changed, 9 insertions, 25 deletions
diff --git a/src/lib/libcrypto/pkcs7/pk7_doit.c b/src/lib/libcrypto/pkcs7/pk7_doit.c
index 484620a686..24ab957b4c 100644
--- a/src/lib/libcrypto/pkcs7/pk7_doit.c
+++ b/src/lib/libcrypto/pkcs7/pk7_doit.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: pk7_doit.c,v 1.41 2017/01/29 17:49:23 beck Exp $ */ 1/* $OpenBSD: pk7_doit.c,v 1.42 2017/05/02 03:59:45 deraadt Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -231,10 +231,7 @@ pkcs7_decrypt_rinfo(unsigned char **pek, int *peklen, PKCS7_RECIP_INFO *ri,
231 231
232 ret = 1; 232 ret = 1;
233 233
234 if (*pek) { 234 freezero(*pek, *peklen);
235 explicit_bzero(*pek, *peklen);
236 free(*pek);
237 }
238 235
239 *pek = ek; 236 *pek = ek;
240 *peklen = eklen; 237 *peklen = eklen;
@@ -577,8 +574,7 @@ PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
577 */ 574 */
578 if (!EVP_CIPHER_CTX_set_key_length(evp_ctx, eklen)) { 575 if (!EVP_CIPHER_CTX_set_key_length(evp_ctx, eklen)) {
579 /* Use random key as MMA defence */ 576 /* Use random key as MMA defence */
580 explicit_bzero(ek, eklen); 577 freezero(ek, eklen);
581 free(ek);
582 ek = tkey; 578 ek = tkey;
583 eklen = tkeylen; 579 eklen = tkeylen;
584 tkey = NULL; 580 tkey = NULL;
@@ -589,16 +585,10 @@ PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
589 if (EVP_CipherInit_ex(evp_ctx, NULL, NULL, ek, NULL, 0) <= 0) 585 if (EVP_CipherInit_ex(evp_ctx, NULL, NULL, ek, NULL, 0) <= 0)
590 goto err; 586 goto err;
591 587
592 if (ek) { 588 freezero(ek, eklen);
593 explicit_bzero(ek, eklen); 589 ek = NULL;
594 free(ek); 590 freezero(tkey, tkeylen);
595 ek = NULL; 591 tkey = NULL;
596 }
597 if (tkey) {
598 explicit_bzero(tkey, tkeylen);
599 free(tkey);
600 tkey = NULL;
601 }
602 592
603 if (out == NULL) 593 if (out == NULL)
604 out = etmp; 594 out = etmp;
@@ -623,14 +613,8 @@ PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
623 613
624 if (0) { 614 if (0) {
625err: 615err:
626 if (ek) { 616 freezero(ek, eklen);
627 explicit_bzero(ek, eklen); 617 freezero(tkey, tkeylen);
628 free(ek);
629 }
630 if (tkey) {
631 explicit_bzero(tkey, tkeylen);
632 free(tkey);
633 }
634 if (out != NULL) 618 if (out != NULL)
635 BIO_free_all(out); 619 BIO_free_all(out);
636 if (btmp != NULL) 620 if (btmp != NULL)