diff options
author | Yao, Jiewen <Jiewen.Yao@intel.com> | 2015-08-18 02:11:10 +0000 |
---|---|---|
committer | jyao1 <jyao1@Edk2> | 2015-08-18 02:11:10 +0000 |
commit | a3a0974822c02ab38ab7a7d21ab79f4b22d00291 (patch) | |
tree | 0a276eea5789b1c5b5bdd78b610e5663533faea5 /SecurityPkg/Hash2DxeCrypto | |
parent | 70bd69912ad2fb6e99271b418f87b98ebb36e0d8 (diff) | |
download | edk2-platforms-a3a0974822c02ab38ab7a7d21ab79f4b22d00291.tar.xz |
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" <Jiewen.Yao@intel.com>
Reviewed-by: "Zhang, Chao B" <chao.b.zhang@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18229 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'SecurityPkg/Hash2DxeCrypto')
-rw-r--r-- | SecurityPkg/Hash2DxeCrypto/Driver.h | 1 | ||||
-rw-r--r-- | SecurityPkg/Hash2DxeCrypto/Hash2DxeCrypto.c | 7 |
2 files changed, 7 insertions, 1 deletions
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;
|