From a3a0974822c02ab38ab7a7d21ab79f4b22d00291 Mon Sep 17 00:00:00 2001 From: "Yao, Jiewen" Date: Tue, 18 Aug 2015 02:11:10 +0000 Subject: Add restriction that HashFinal() must be after at least one HashUpdate(). Just follow UEFI spec. 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@18229 6f19259b-4bc3-4df7-8a09-765794883524 --- SecurityPkg/Hash2DxeCrypto/Driver.h | 1 + SecurityPkg/Hash2DxeCrypto/Hash2DxeCrypto.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'SecurityPkg') diff --git a/SecurityPkg/Hash2DxeCrypto/Driver.h b/SecurityPkg/Hash2DxeCrypto/Driver.h index 771aedc1ed..a145858fa0 100644 --- a/SecurityPkg/Hash2DxeCrypto/Driver.h +++ b/SecurityPkg/Hash2DxeCrypto/Driver.h @@ -57,6 +57,7 @@ typedef struct { EFI_HASH2_PROTOCOL Hash2Protocol; VOID *HashContext; VOID *HashInfoContext; + BOOLEAN Updated; } HASH2_INSTANCE_DATA; #define HASH2_INSTANCE_DATA_FROM_THIS(a) \ diff --git a/SecurityPkg/Hash2DxeCrypto/Hash2DxeCrypto.c b/SecurityPkg/Hash2DxeCrypto/Hash2DxeCrypto.c index 94057ab2e1..ab34de7351 100644 --- a/SecurityPkg/Hash2DxeCrypto/Hash2DxeCrypto.c +++ b/SecurityPkg/Hash2DxeCrypto/Hash2DxeCrypto.c @@ -500,6 +500,7 @@ BaseCrypto2HashInit ( // Instance->HashContext = HashCtx; Instance->HashInfoContext = HashInfo; + Instance->Updated = FALSE; return EFI_SUCCESS; } @@ -551,6 +552,8 @@ BaseCrypto2HashUpdate ( return EFI_OUT_OF_RESOURCES; } + Instance->Updated = TRUE; + return EFI_SUCCESS; } @@ -590,7 +593,8 @@ BaseCrypto2HashFinal ( // Consistency Check // Instance = HASH2_INSTANCE_DATA_FROM_THIS(This); - if ((Instance->HashContext == NULL) || (Instance->HashInfoContext == NULL)) { + if ((Instance->HashContext == NULL) || (Instance->HashInfoContext == NULL) || + (!Instance->Updated)) { return EFI_NOT_READY; } HashInfo = Instance->HashInfoContext; @@ -604,6 +608,7 @@ BaseCrypto2HashFinal ( FreePool (HashCtx); Instance->HashInfoContext = NULL; Instance->HashContext = NULL; + Instance->Updated = FALSE; if (!Ret) { return EFI_OUT_OF_RESOURCES; -- cgit v1.2.3