diff options
Diffstat (limited to 'providers/implementations/ciphers/cipher_aria_ccm.c')
-rw-r--r-- | providers/implementations/ciphers/cipher_aria_ccm.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/providers/implementations/ciphers/cipher_aria_ccm.c b/providers/implementations/ciphers/cipher_aria_ccm.c index 39a96a6f14..5fae593469 100644 --- a/providers/implementations/ciphers/cipher_aria_ccm.c +++ b/providers/implementations/ciphers/cipher_aria_ccm.c @@ -31,10 +31,16 @@ static void *aria_ccm_newctx(void *provctx, size_t keybits) static void *aria_ccm_dupctx(void *provctx) { PROV_ARIA_CCM_CTX *ctx = provctx; + PROV_ARIA_CCM_CTX *dctx = NULL; if (ctx == NULL) return NULL; - return OPENSSL_memdup(ctx, sizeof(*ctx)); + + dctx = OPENSSL_memdup(ctx, sizeof(*ctx)); + if (dctx != NULL && dctx->base.ccm_ctx.key != NULL) + dctx->base.ccm_ctx.key = &dctx->ks.ks; + + return dctx; } static void aria_ccm_freectx(void *vctx) |