summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2015-03-28 15:25:46 +0000
committerDr. Stephen Henson <steve@openssl.org>2015-03-30 22:01:31 +0100
commit94f4b4b31314c07a4b6c9898e14c1023a112d0d0 (patch)
tree24de1f3829c179493aa8907832c77417a34e47af
parent3a1f43023acb7852969658d0ffedcd9bdb561a47 (diff)
Rewrite X509_PKEY_new to avoid old ASN1. macros.
Reviewed-by: Rich Salz <rsalz@openssl.org>
-rw-r--r--crypto/asn1/x_pkey.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/crypto/asn1/x_pkey.c b/crypto/asn1/x_pkey.c
index 2b131e4a59..98e4a3d491 100644
--- a/crypto/asn1/x_pkey.c
+++ b/crypto/asn1/x_pkey.c
@@ -60,18 +60,22 @@
#include "cryptlib.h"
#include <openssl/evp.h>
#include <openssl/objects.h>
-#include <openssl/asn1_mac.h>
#include <openssl/x509.h>
X509_PKEY *X509_PKEY_new(void)
{
X509_PKEY *ret = NULL;
- ASN1_CTX c;
- M_ASN1_New_Malloc(ret, X509_PKEY);
+ ret = OPENSSL_malloc(sizeof(X509_PKEY));
+ if (!ret)
+ goto err;
+ memset(ret, 0, sizeof(X509_PKEY));
+
ret->version = 0;
- M_ASN1_New(ret->enc_algor, X509_ALGOR_new);
- M_ASN1_New(ret->enc_pkey, ASN1_OCTET_STRING_new);
+ ret->enc_algor = X509_ALGOR_new();
+ ret->enc_pkey = ASN1_OCTET_STRING_new();
+ if (!ret->enc_algor || !ret->enc_pkey)
+ goto err;
ret->dec_pkey = NULL;
ret->key_length = 0;
ret->key_data = NULL;
@@ -79,8 +83,11 @@ X509_PKEY *X509_PKEY_new(void)
ret->cipher.cipher = NULL;
memset(ret->cipher.iv, 0, EVP_MAX_IV_LENGTH);
ret->references = 1;
- return (ret);
- M_ASN1_New_Error(ASN1_F_X509_PKEY_NEW);
+ return ret;
+err:
+ X509_PKEY_free(ret);
+ ASN1err(ASN1_F_X509_PKEY_NEW, ERR_R_MALLOC_FAILURE);
+ return NULL;
}
void X509_PKEY_free(X509_PKEY *x)