summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhang, Chao B <chao.b.zhang@intel.com>2016-08-16 10:21:42 +0800
committerZhang, Chao B <chao.b.zhang@intel.com>2016-08-17 09:01:46 +0800
commitfd4d9c6495109979eb17779e07666c7c11c79c6a (patch)
tree7a1664732140a0fa395936601f4a6d19625cdc05
parentd35ec1e0507dc612ed6485410f12e683a726a3bf (diff)
downloadedk2-platforms-fd4d9c6495109979eb17779e07666c7c11c79c6a.tar.xz
SecurityPkg: AuthVariableLib: Fix inconsistent CertDB case
2 steps are used to create/delete a time based variable. For create step 1: Insert Signer Cert to CertDB. Step 2: Insert Payload to Variable. For delete step 1: Delete Variable. Step 2: Delete Cert from CertDB. System may breaks between step 1 & step 2, so CertDB may contains useless Cert in the next reboot. AuthVariableLib choose to sync consistent state between CertDB & Time Auth Variable on initialization. However, it doesn't apply Time Auth attribute check. Now add it. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Chao Zhang <chao.b.zhang@intel.com> Reviewed-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Zeng Star <star.zeng@intel.com>
-rw-r--r--SecurityPkg/Library/AuthVariableLib/AuthService.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/SecurityPkg/Library/AuthVariableLib/AuthService.c b/SecurityPkg/Library/AuthVariableLib/AuthService.c
index 6e1e284801..b013d420f6 100644
--- a/SecurityPkg/Library/AuthVariableLib/AuthService.c
+++ b/SecurityPkg/Library/AuthVariableLib/AuthService.c
@@ -2100,7 +2100,7 @@ CleanCertsFromDb (
&AuthVariableInfo
);
- if (EFI_ERROR(Status)) {
+ if (EFI_ERROR(Status) || (AuthVariableInfo.Attributes & EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS) == 0) {
Status = DeleteCertsFromDb(
VariableName,
&AuthVarGuid,