if (!(*ca = sk_new(NULL)))
if (!(*ca = sk_X509_new(NULL)))
int PKCS12_parse (PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert,	     STACK **ca){	/* Check for NULL PKCS12 structure */	if(!p12)		{		PKCS12err(PKCS12_F_PKCS12_PARSE,PKCS12_R_INVALID_NULL_PKCS12_POINTER);		return 0;		}	/* Allocate stack for ca certificates if needed */	if ((ca != NULL) && (*ca == NULL))		{		if (!(*ca = sk_new(NULL)))			{			PKCS12err(PKCS12_F_PKCS12_PARSE,ERR_R_MALLOC_FAILURE);			return 0;			}		}	if(pkey) *pkey = NULL;	if(cert) *cert = NULL;	/* Check the mac */	if (!PKCS12_verify_mac (p12, pass, -1))		{		PKCS12err(PKCS12_F_PKCS12_PARSE,PKCS12_R_MAC_VERIFY_FAILURE);		goto err;		}	if (!parse_pk12 (p12, pass, -1, pkey, cert, ca))		{		PKCS12err(PKCS12_F_PKCS12_PARSE,PKCS12_R_PARSE_ERROR);		goto err;		}	return 1; err:	if (pkey && *pkey) EVP_PKEY_free (*pkey);	if (cert && *cert) X509_free (*cert);	if (ca) sk_pop_free (*ca, X509_free);	return 0;}