]> git.proxmox.com Git - mirror_edk2.git/blobdiff - SecurityPkg/Library/AuthVariableLib/AuthVariableLib.c
SecurityPkg AuthVariableLib: Correct address pointers data
[mirror_edk2.git] / SecurityPkg / Library / AuthVariableLib / AuthVariableLib.c
index 0bb09189ee4604e4d3cc9515e3ce82586d4628d1..a54eaaa066bb53b744dc1a6c4bee61d3d2d25c78 100644 (file)
@@ -101,7 +101,7 @@ VARIABLE_ENTRY_PROPERTY mAuthVarEntry[] = {
   },\r
 };\r
 \r
-VOID *mAddressPointer[3];\r
+VOID **mAuthVarAddressPointer[10];\r
 \r
 AUTH_VAR_LIB_CONTEXT_IN *mAuthVarLibContextIn = NULL;\r
 \r
@@ -352,6 +352,15 @@ AuthVariableLibInitialize (
     if (EFI_ERROR (Status)) {\r
       return Status;\r
     }\r
+  } else {\r
+    //\r
+    // Clean up Certs to make certDB & Time based auth variable consistent\r
+    //\r
+    Status = CleanCertsFromDb();\r
+    if (EFI_ERROR (Status)) {\r
+      DEBUG ((EFI_D_INFO, "Clean up CertDB fail! Status %x\n", Status));\r
+      return Status;\r
+    }\r
   }\r
 \r
   //\r
@@ -397,11 +406,18 @@ AuthVariableLibInitialize (
   AuthVarLibContextOut->StructSize = sizeof (AUTH_VAR_LIB_CONTEXT_OUT);\r
   AuthVarLibContextOut->AuthVarEntry = mAuthVarEntry;\r
   AuthVarLibContextOut->AuthVarEntryCount = sizeof (mAuthVarEntry) / sizeof (mAuthVarEntry[0]);\r
-  mAddressPointer[0] = mHashCtx;\r
-  mAddressPointer[1] = mPubKeyStore;\r
-  mAddressPointer[2] = mCertDbStore;\r
-  AuthVarLibContextOut->AddressPointer = mAddressPointer;\r
-  AuthVarLibContextOut->AddressPointerCount = sizeof (mAddressPointer) / sizeof (mAddressPointer[0]);\r
+  mAuthVarAddressPointer[0] = (VOID **) &mPubKeyStore;\r
+  mAuthVarAddressPointer[1] = (VOID **) &mCertDbStore;\r
+  mAuthVarAddressPointer[2] = (VOID **) &mHashCtx;\r
+  mAuthVarAddressPointer[3] = (VOID **) &mAuthVarLibContextIn;\r
+  mAuthVarAddressPointer[4] = (VOID **) &(mAuthVarLibContextIn->FindVariable),\r
+  mAuthVarAddressPointer[5] = (VOID **) &(mAuthVarLibContextIn->FindNextVariable),\r
+  mAuthVarAddressPointer[6] = (VOID **) &(mAuthVarLibContextIn->UpdateVariable),\r
+  mAuthVarAddressPointer[7] = (VOID **) &(mAuthVarLibContextIn->GetScratchBuffer),\r
+  mAuthVarAddressPointer[8] = (VOID **) &(mAuthVarLibContextIn->CheckRemainingSpaceForConsistency),\r
+  mAuthVarAddressPointer[9] = (VOID **) &(mAuthVarLibContextIn->AtRuntime),\r
+  AuthVarLibContextOut->AddressPointer = mAuthVarAddressPointer;\r
+  AuthVarLibContextOut->AddressPointerCount = sizeof (mAuthVarAddressPointer) / sizeof (mAuthVarAddressPointer[0]);\r
 \r
   return Status;\r
 }\r