diff --git a/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7Verify.c b/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7Verify.c index b8cfa4286d..d0b0c838b8 100644 --- a/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7Verify.c +++ b/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7Verify.c @@ -719,11 +719,6 @@ Pkcs7GetAttachedContent ( CONST UINT8 *Temp; ASN1_OCTET_STRING *OctStr; - *Content = NULL; - Pkcs7 = NULL; - SignedData = NULL; - OctStr = NULL; - // // Check input parameter. // @@ -731,6 +726,11 @@ Pkcs7GetAttachedContent ( return FALSE; } + *Content = NULL; + Pkcs7 = NULL; + SignedData = NULL; + OctStr = NULL; + Status = WrapPkcs7Data (P7Data, P7Length, &Wrapped, &SignedData, &SignedDataSize); if (!Status || (SignedDataSize > INT_MAX)) { goto _Exit; @@ -771,6 +771,10 @@ Pkcs7GetAttachedContent ( if ((OctStr->length > 0) && (OctStr->data != NULL)) { *ContentSize = OctStr->length; *Content = malloc (*ContentSize); + if (*Content == NULL) { + *ContentSize = 0; + goto _Exit; + } CopyMem (*Content, OctStr->data, *ContentSize); } }