Make sure the given EVP_PKEY is updated in the PEM_STRING_PKCS8INF case also.
authorRichard Levitte <levitte@openssl.org>
Thu, 26 Feb 2004 22:07:47 +0000 (22:07 +0000)
committerRichard Levitte <levitte@openssl.org>
Thu, 26 Feb 2004 22:07:47 +0000 (22:07 +0000)
PR: 833

crypto/pem/pem_pkey.c

index d96ecf6940672b03c4b372df4d7633aabaf97a12..f77c949e87b3d2054760700488d0ad8498f1c690 100644 (file)
@@ -87,6 +87,10 @@ EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, vo
                p8inf=d2i_PKCS8_PRIV_KEY_INFO(NULL, &p, len);
                if(!p8inf) goto p8err;
                ret = EVP_PKCS82PKEY(p8inf);
+               if(x) {
+                       if(*x) EVP_PKEY_free((EVP_PKEY *)*x);
+                       *x = ret;
+               }
                PKCS8_PRIV_KEY_INFO_free(p8inf);
        } else if (strcmp(nm,PEM_STRING_PKCS8) == 0) {
                PKCS8_PRIV_KEY_INFO *p8inf;