12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- From 5378c582c8d3f1130b17abb2950bfd09cde099c6 Mon Sep 17 00:00:00 2001
- From: Eneas U de Queiroz <[email protected]>
- Date: Mon, 5 Nov 2018 15:59:44 -0200
- Subject: [PATCH 4/7] eng_devcrypto: close session on cleanup, not final
- Close the session in digest_cleanup instead of digest_final. A failure
- in closing the session does not mean a previous successful digest final
- has failed as well.
- Signed-off-by: Eneas U de Queiroz <[email protected]>
- Reviewed-by: Matthias St. Pierre <[email protected]>
- Reviewed-by: Richard Levitte <[email protected]>
- (Merged from https://github.com/openssl/openssl/pull/7585)
- (cherry picked from commit a67203a19d379a8cc8b369587c60c46eb4e19014)
- --- a/crypto/engine/eng_devcrypto.c
- +++ b/crypto/engine/eng_devcrypto.c
- @@ -461,10 +461,6 @@ static int digest_final(EVP_MD_CTX *ctx,
- 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, c
-
- 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;
- }
-
|