X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fengine%2Feng_devcrypto.c;h=513ea7af9f03a06145eb427e4734f70e2618a99a;hp=1bb6308adce23e896ecd91e1d31092c42dbfce81;hb=a67203a19d379a8cc8b369587c60c46eb4e19014;hpb=ae8183690fa53b978d4647563f5a521c4cafe94c diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c index 1bb6308adc..513ea7af9f 100644 --- a/crypto/engine/eng_devcrypto.c +++ b/crypto/engine/eng_devcrypto.c @@ -461,10 +461,6 @@ static int digest_final(EVP_MD_CTX *ctx, unsigned char *md) SYSerr(SYS_F_IOCTL, errno); return 0; } - if (ioctl(cfd, CIOCFSESSION, &digest_ctx->sess.ses) < 0) { - SYSerr(SYS_F_IOCTL, errno); - return 0; - } return 1; } @@ -496,6 +492,15 @@ static int digest_copy(EVP_MD_CTX *to, const EVP_MD_CTX *from) static int digest_cleanup(EVP_MD_CTX *ctx) { + struct digest_ctx *digest_ctx = + (struct digest_ctx *)EVP_MD_CTX_md_data(ctx); + + if (digest_ctx == NULL) + return 1; + if (ioctl(cfd, CIOCFSESSION, &digest_ctx->sess.ses) < 0) { + SYSerr(SYS_F_IOCTL, errno); + return 0; + } return 1; }