Revision: 16468
          http://sourceforge.net/p/edk2/code/16468
Author:   qlong
Date:     2014-12-03 07:40:32 +0000 (Wed, 03 Dec 2014)
Log Message:
-----------
Code clean-up to eliminate potential "dereferenced pointer" warning. 

Contributed-under: TianoCore Contribution Agreement 1.0

Signed-off-by: Qin Long <[email protected]> 
Reviewed-by: Guo Dong <[email protected]>
Reviewed-by: Eric Dong <[email protected]>

Modified Paths:
--------------
    
trunk/edk2/SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.c

Modified: 
trunk/edk2/SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.c
===================================================================
--- 
trunk/edk2/SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.c
    2014-12-02 21:30:41 UTC (rev 16467)
+++ 
trunk/edk2/SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.c
    2014-12-03 07:40:32 UTC (rev 16468)
@@ -860,6 +860,7 @@
   HashAlg  = HASHALG_MAX;
 
   ASSERT (RevocationTime != NULL);
+  ASSERT (DbxList != NULL);
 
   while ((DbxSize > 0) && (SignatureListSize >= DbxList->SignatureListSize)) {
     //
@@ -1132,16 +1133,17 @@
   //
   DbtDataSize = 0;
   Status   = gRT->GetVariable (EFI_IMAGE_SECURITY_DATABASE2, 
&gEfiImageSecurityDatabaseGuid, NULL, &DbtDataSize, NULL);
-  if (Status == EFI_BUFFER_TOO_SMALL) {
-    DbtData = (UINT8 *) AllocateZeroPool (DbtDataSize);
-    if (DbtData == NULL) {
-      goto Done;
-    }
-    Status = gRT->GetVariable (EFI_IMAGE_SECURITY_DATABASE2, 
&gEfiImageSecurityDatabaseGuid, NULL, &DbtDataSize, (VOID *) DbtData);
-    if (EFI_ERROR (Status)) {
-      goto Done;
-    }
+  if (Status != EFI_BUFFER_TOO_SMALL) {
+    goto Done;
   }
+  DbtData = (UINT8 *) AllocateZeroPool (DbtDataSize);
+  if (DbtData == NULL) {
+    goto Done;
+  }
+  Status = gRT->GetVariable (EFI_IMAGE_SECURITY_DATABASE2, 
&gEfiImageSecurityDatabaseGuid, NULL, &DbtDataSize, (VOID *) DbtData);
+  if (EFI_ERROR (Status)) {
+    goto Done;
+  }
 
   CertList = (EFI_SIGNATURE_LIST *) DbtData;
   while ((DbtDataSize > 0) && (DbtDataSize >= CertList->SignatureListSize)) {
@@ -1229,14 +1231,15 @@
   //
   DataSize = 0;
   Status   = gRT->GetVariable (EFI_IMAGE_SECURITY_DATABASE1, 
&gEfiImageSecurityDatabaseGuid, NULL, &DataSize, NULL);
-  if (Status == EFI_BUFFER_TOO_SMALL) {
-    Data = (UINT8 *) AllocateZeroPool (DataSize);
-    if (Data == NULL) {
-      return IsForbidden;
-    }
+  if (Status != EFI_BUFFER_TOO_SMALL) {
+    return IsForbidden;
+  }
+  Data = (UINT8 *) AllocateZeroPool (DataSize);
+  if (Data == NULL) {
+    return IsForbidden;
+  }
 
-    Status = gRT->GetVariable (EFI_IMAGE_SECURITY_DATABASE1, 
&gEfiImageSecurityDatabaseGuid, NULL, &DataSize, (VOID *) Data);
-  }
+  Status = gRT->GetVariable (EFI_IMAGE_SECURITY_DATABASE1, 
&gEfiImageSecurityDatabaseGuid, NULL, &DataSize, (VOID *) Data);
   if (EFI_ERROR (Status)) {
     return IsForbidden;
   }
@@ -1254,7 +1257,7 @@
   //       UINT8  Certn[];
   //
   Pkcs7GetSigners (AuthData, AuthDataSize, &CertBuffer, &BufferLength, 
&TrustedCert, &TrustedCertLength);
-  if (BufferLength == 0) {
+  if ((BufferLength == 0) || (CertBuffer == NULL)) {
     IsForbidden = TRUE;
     goto Done;
   }


------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to