Initial support for Certificate Policies extension: print out works but setting
[oweals/openssl.git] / crypto / asn1 / x_pubkey.c
index 200817bf5b33eed1b58569c53716d1f55766ce81..2177ebd6ed41e1954f780e4a537abb7c673416cb 100644 (file)
@@ -183,7 +183,7 @@ EVP_PKEY *pkey;
                goto err;
                }
 
-       i=i2d_PublicKey(pkey,NULL);
+       if ((i=i2d_PublicKey(pkey,NULL)) <= 0) goto err;
        if ((s=(unsigned char *)Malloc(i+1)) == NULL) goto err;
        p=s;
        i2d_PublicKey(pkey,&p);
@@ -222,7 +222,11 @@ X509_PUBKEY *key;
 
        if (key == NULL) goto err;
 
-       if (key->pkey != NULL) return(key->pkey);
+       if (key->pkey != NULL)
+           {
+           CRYPTO_add(&key->pkey->references,1,CRYPTO_LOCK_EVP_PKEY);
+           return(key->pkey);
+           }
 
        if (key->public_key == NULL) goto err;
 
@@ -252,6 +256,7 @@ X509_PUBKEY *key;
                }
 #endif
        key->pkey=ret;
+       CRYPTO_add(&ret->references,1,CRYPTO_LOCK_EVP_PKEY);
        return(ret);
 err:
        if (ret != NULL)