tpm2-provider-cipher: Fix potential allocator–deallocator inconsistency for IV buffers#163
Closed
hyperfinitism wants to merge 1 commit intotpm2-software:masterfrom
Closed
Conversation
In tpm2-provider-cipher, cctx->ivector is allocated using OPENSSL_zalloc and deallocated using OPENSSL_clear_free(). During tpm2_cipher_process_buffer/update_stream(), the IV buffer cctx->ivector will be replaced with the IV buffer ivector allocated in encrypt_decrypt(); this may happen (de)allocator inconsistency. tpm2-tss uses the standard malloc/free(), while OpenSSL uses the OPENSSL_malloc/free(); the latter may use custom (de)allocator set via CRYPTO_set_mem_functions(). This commit resolves this potential malloc/free inconsistency/ Signed-off-by: Takuma IMAMURA <209989118+hyperfinitism@users.noreply.github.com>
Contributor
Contributor
Author
|
Thanks for the review and for pointing out the alternative approach. I agree that the solution proposed in the other PR provides a clearer and more appropriate fix. In comparison, my change is more of a workaround and does not address the underlying issue as cleanly. I will close this PR and follow the other one instead. Thanks again for the feedback. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue
In tpm2-provider-cipher.c,
cctx->ivectoris initially allocated usingOPENSSL_zallocand finally deallocated usingOPENSSL_clear_free().In the
tpm2_cipher_process_buffer/update_stream()functions, the IV buffercctx->ivectorwill be replaced with the IV bufferivectorallocated inencrypt_decrypt(); this may happen allocator–deallocator inconsistency.tpm2-tss internally uses the standard malloc/free(), while OpenSSL uses the OPENSSL_malloc/free(); the latter may internally use custom allocator/reallocator/deallocator set via
CRYPTO_set_mem_functions().Fix
This commit resolves this potential inconsistency as follows:
cctx->ivectorcctx->ivector = ivectorivectortocctx->ivectorivectorTest
I have confirmed that
make checkcompleted successfully.