From 099bff5def30b277157b2387d5d910e2ad14f84e Mon Sep 17 00:00:00 2001 From: "Yao, Jiewen" Date: Mon, 17 Aug 2015 05:48:30 +0000 Subject: Add context check and init in BaseCrypto2Hash(). Follow UEFI specification to add context check and init in BaseCrypto2Hash(), so that other function can get proper status on hash operation. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: "Yao, Jiewen" Reviewed-by: "Zhang, Chao B" git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18227 6f19259b-4bc3-4df7-8a09-765794883524 --- SecurityPkg/Hash2DxeCrypto/Hash2DxeCrypto.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'SecurityPkg/Hash2DxeCrypto/Hash2DxeCrypto.c') diff --git a/SecurityPkg/Hash2DxeCrypto/Hash2DxeCrypto.c b/SecurityPkg/Hash2DxeCrypto/Hash2DxeCrypto.c index dab0299236..94057ab2e1 100644 --- a/SecurityPkg/Hash2DxeCrypto/Hash2DxeCrypto.c +++ b/SecurityPkg/Hash2DxeCrypto/Hash2DxeCrypto.c @@ -358,6 +358,7 @@ BaseCrypto2Hash ( UINTN CtxSize; BOOLEAN Ret; EFI_STATUS Status; + HASH2_INSTANCE_DATA *Instance; Status = EFI_SUCCESS; @@ -373,6 +374,13 @@ BaseCrypto2Hash ( if (HashInfo == NULL) { return EFI_UNSUPPORTED; } + + Instance = HASH2_INSTANCE_DATA_FROM_THIS(This); + if (Instance->HashContext != NULL) { + FreePool (Instance->HashContext); + } + Instance->HashInfoContext = NULL; + Instance->HashContext = NULL; // // Start hash sequence @@ -392,6 +400,12 @@ BaseCrypto2Hash ( goto Done; } + // + // Setup the context + // + Instance->HashContext = HashCtx; + Instance->HashInfoContext = HashInfo; + Ret = HashInfo->Update (HashCtx, Message, MessageSize); if (!Ret) { Status = EFI_OUT_OF_RESOURCES; @@ -404,7 +418,12 @@ BaseCrypto2Hash ( goto Done; } Done: + // + // Cleanup the context + // FreePool (HashCtx); + Instance->HashInfoContext = NULL; + Instance->HashContext = NULL; return Status; } -- cgit v1.2.3