summaryrefslogtreecommitdiffstats
path: root/crypto/pkcs7/pk7_asn1.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/pkcs7/pk7_asn1.c')
-rw-r--r--crypto/pkcs7/pk7_asn1.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/crypto/pkcs7/pk7_asn1.c b/crypto/pkcs7/pk7_asn1.c
index 60ad5b1e76..1cd867721e 100644
--- a/crypto/pkcs7/pk7_asn1.c
+++ b/crypto/pkcs7/pk7_asn1.c
@@ -66,8 +66,16 @@ ASN1_NDEF_SEQUENCE_cb(PKCS7, pk7_cb) = {
PKCS7 *d2i_PKCS7(PKCS7 **a, const unsigned char **in, long len)
{
PKCS7 *ret;
+ OSSL_LIB_CTX *libctx = NULL;
+ const char *propq = NULL;
- ret = (PKCS7 *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, (PKCS7_it()));
+ if (a != NULL && *a != NULL) {
+ libctx = (*a)->ctx.libctx;
+ propq = (*a)->ctx.propq;
+ }
+
+ ret = (PKCS7 *)ASN1_item_d2i_ex((ASN1_VALUE **)a, in, len, (PKCS7_it()),
+ libctx, propq);
if (ret != NULL)
ossl_pkcs7_resolve_libctx(ret);
return ret;
@@ -85,7 +93,8 @@ PKCS7 *PKCS7_new(void)
PKCS7 *PKCS7_new_ex(OSSL_LIB_CTX *libctx, const char *propq)
{
- PKCS7 *pkcs7 = PKCS7_new();
+ PKCS7 *pkcs7 = (PKCS7 *)ASN1_item_new_ex(ASN1_ITEM_rptr(PKCS7), libctx,
+ propq);
if (pkcs7 != NULL) {
pkcs7->ctx.libctx = libctx;