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);
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;
}
#endif
key->pkey=ret;
+ CRYPTO_add(&ret->references,1,CRYPTO_LOCK_EVP_PKEY);
return(ret);
err:
if (ret != NULL)