diff options
Diffstat (limited to 'crypto/pkcs7/pk7_asn1.c')
-rw-r--r-- | crypto/pkcs7/pk7_asn1.c | 13 |
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; |