projects
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix memory leak cause by race condition when creating public keys.
[openssl.git]
/
crypto
/
asn1
/
i2d_pu.c
diff --git
a/crypto/asn1/i2d_pu.c
b/crypto/asn1/i2d_pu.c
index 8c1e65beb247f19ba7544160321f0c921dffff50..34286dbd359f9a7724057c9fb737765b5c2a80fb 100644
(file)
--- a/
crypto/asn1/i2d_pu.c
+++ b/
crypto/asn1/i2d_pu.c
@@
-61,6
+61,15
@@
#include <openssl/bn.h>
#include <openssl/evp.h>
#include <openssl/objects.h>
#include <openssl/bn.h>
#include <openssl/evp.h>
#include <openssl/objects.h>
+#ifndef OPENSSL_NO_RSA
+#include <openssl/rsa.h>
+#endif
+#ifndef OPENSSL_NO_DSA
+#include <openssl/dsa.h>
+#endif
+#ifndef OPENSSL_NO_EC
+#include <openssl/ec.h>
+#endif
int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp)
{
int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp)
{
@@
-73,6
+82,10
@@
int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp)
#ifndef OPENSSL_NO_DSA
case EVP_PKEY_DSA:
return(i2d_DSAPublicKey(a->pkey.dsa,pp));
#ifndef OPENSSL_NO_DSA
case EVP_PKEY_DSA:
return(i2d_DSAPublicKey(a->pkey.dsa,pp));
+#endif
+#ifndef OPENSSL_NO_EC
+ case EVP_PKEY_EC:
+ return(i2o_ECPublicKey(a->pkey.ec, pp));
#endif
default:
ASN1err(ASN1_F_I2D_PUBLICKEY,ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE);
#endif
default:
ASN1err(ASN1_F_I2D_PUBLICKEY,ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE);