Commit e3348cfe authored by Bernd Edlinger's avatar Bernd Edlinger
Browse files

Clear outputs in PKCS12_parse error handling.

parent d46d2da4
Loading
Loading
Loading
Loading
+13 −8
Original line number Diff line number Diff line
@@ -84,6 +84,12 @@ int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert,
{
    STACK_OF(X509) *ocerts = NULL;
    X509 *x = NULL;

    if (pkey)
        *pkey = NULL;
    if (cert)
        *cert = NULL;

    /* Check for NULL PKCS12 structure */

    if (!p12) {
@@ -92,11 +98,6 @@ int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert,
        return 0;
    }

    if (pkey)
        *pkey = NULL;
    if (cert)
        *cert = NULL;

    /* Check the mac */

    /*
@@ -125,7 +126,7 @@ int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert,

    if (!ocerts) {
        PKCS12err(PKCS12_F_PKCS12_PARSE, ERR_R_MALLOC_FAILURE);
        return 0;
        goto err;
    }

    if (!parse_pk12(p12, pass, -1, pkey, ocerts)) {
@@ -163,10 +164,14 @@ int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert,

 err:

    if (pkey && *pkey)
    if (pkey) {
        EVP_PKEY_free(*pkey);
    if (cert && *cert)
        *pkey = NULL;
    }
    if (cert) {
        X509_free(*cert);
        *cert = NULL;
    }
    if (x)
        X509_free(x);
    if (ocerts)