return FALSE;\r
}\r
\r
- Status = FALSE;\r
X509Cert = NULL;\r
\r
//\r
//\r
Status = X509ConstructCertificate (Cert, CertSize, (UINT8 **) &X509Cert);\r
if ((X509Cert == NULL) || (!Status)) {\r
+ Status = FALSE;\r
goto _Exit;\r
}\r
\r
+ Status = FALSE;\r
+\r
//\r
// Retrieve subject name from certificate object.\r
//\r
X509Name = X509_get_subject_name (X509Cert);\r
+ if (X509Name == NULL) {\r
+ goto _Exit;\r
+ }\r
+\r
if (*SubjectSize < (UINTN) X509Name->bytes->length) {\r
*SubjectSize = (UINTN) X509Name->bytes->length;\r
goto _Exit;\r
//\r
// Release Resources.\r
//\r
- X509_free (X509Cert);\r
+ if (X509Cert != NULL) {\r
+ X509_free (X509Cert);\r
+ }\r
\r
return Status;\r
}\r
return FALSE;\r
}\r
\r
- Status = FALSE;\r
Pkey = NULL;\r
X509Cert = NULL;\r
\r
//\r
Status = X509ConstructCertificate (Cert, CertSize, (UINT8 **) &X509Cert);\r
if ((X509Cert == NULL) || (!Status)) {\r
+ Status = FALSE;\r
goto _Exit;\r
}\r
\r
+ Status = FALSE;\r
+\r
//\r
// Retrieve and check EVP_PKEY data from X509 Certificate.\r
//\r
//\r
// Release Resources.\r
//\r
- X509_free (X509Cert);\r
- EVP_PKEY_free (Pkey);\r
+ if (X509Cert != NULL) {\r
+ X509_free (X509Cert);\r
+ }\r
+\r
+ if (Pkey != NULL) {\r
+ EVP_PKEY_free (Pkey);\r
+ } \r
\r
return Status;\r
}\r
//\r
// Register & Initialize necessary digest algorithms for certificate verification.\r
//\r
- EVP_add_digest (EVP_md5());\r
- EVP_add_digest (EVP_sha1());\r
- EVP_add_digest (EVP_sha256());\r
+ if (EVP_add_digest (EVP_md5 ()) == 0) {\r
+ goto _Exit;\r
+ }\r
+ if (EVP_add_digest (EVP_sha1 ()) == 0) {\r
+ goto _Exit;\r
+ }\r
+ if (EVP_add_digest (EVP_sha256 ()) == 0) {\r
+ goto _Exit;\r
+ }\r
\r
//\r
// Read DER-encoded certificate to be verified and Construct X509 object.\r
//\r
Status = X509ConstructCertificate (Cert, CertSize, (UINT8 **) &X509Cert);\r
if ((X509Cert == NULL) || (!Status)) {\r
+ Status = FALSE;\r
goto _Exit;\r
}\r
\r
//\r
Status = X509ConstructCertificate (CACert, CACertSize, (UINT8 **) &X509CACert);\r
if ((X509CACert == NULL) || (!Status)) {\r
+ Status = FALSE;\r
goto _Exit;\r
}\r
\r
+ Status = FALSE;\r
+\r
//\r
// Set up X509 Store for trusted certificate.\r
//\r
//\r
// Release Resources.\r
//\r
- X509_free (X509Cert);\r
- X509_free (X509CACert);\r
- X509_STORE_free (CertStore);\r
+ if (X509Cert != NULL) {\r
+ X509_free (X509Cert);\r
+ }\r
+\r
+ if (X509CACert != NULL) {\r
+ X509_free (X509CACert);\r
+ }\r
\r
+ if (CertStore != NULL) {\r
+ X509_STORE_free (CertStore);\r
+ }\r
+ \r
return Status;\r
}\r