CryptoPkg/BaseCryptLib: Add NULL pointer checks in DH and P7Verify
authorLong Qin <qin.long@intel.com>
Fri, 19 May 2017 07:22:10 +0000 (15:22 +0800)
committerLong Qin <qin.long@intel.com>
Mon, 22 May 2017 00:57:48 +0000 (08:57 +0800)
Add more NULL pointer checks before using them in DhGenerateKey and
Pkcs7GetCertificatesList functions to eliminate possible dereferenced
pointer issue.

Cc: Ting Ye <ting.ye@intel.com>
Cc: Hao Wu <hao.a.wu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Qin Long <qin.long@intel.com>
Reviewed-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Ting Ye <ting.ye@intel.com>
CryptoPkg/Library/BaseCryptLib/Pk/CryptDh.c
CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7Verify.c

index f44684f..391efd5 100644 (file)
@@ -232,7 +232,9 @@ DhGenerateKey (
       return FALSE;\r
     }\r
 \r
-    BN_bn2bin (DhPubKey, PublicKey);\r
+    if (PublicKey != NULL) {\r
+      BN_bn2bin (DhPubKey, PublicKey);\r
+    }\r
     *PublicKeySize = Size;\r
   }\r
 \r
index 45d5df5..d564591 100644 (file)
@@ -558,7 +558,9 @@ Pkcs7GetCertificatesList (
     }\r
   }\r
   CtxUntrusted = X509_STORE_CTX_get0_untrusted (CertCtx);\r
-  (VOID)sk_X509_delete_ptr (CtxUntrusted, Signer);\r
+  if (CtxUntrusted != NULL) {\r
+    (VOID)sk_X509_delete_ptr (CtxUntrusted, Signer);\r
+  }\r
 \r
   //\r
   // Build certificates stack chained from Signer's certificate.\r
@@ -711,8 +713,10 @@ _Error:
   }\r
   sk_X509_free (Signers);\r
 \r
-  X509_STORE_CTX_cleanup (CertCtx);\r
-  X509_STORE_CTX_free (CertCtx);\r
+  if (CertCtx != NULL) {\r
+    X509_STORE_CTX_cleanup (CertCtx);\r
+    X509_STORE_CTX_free (CertCtx);\r
+  }\r
 \r
   if (SingleCert != NULL) {\r
     free (SingleCert);\r